0
API에서 데이터를 검색 한 후 테이블을 채우려고합니다.Knockout.js 바인딩이 업데이트되지 않았습니다.
관련 HTML :
<tbody data-bind="foreach: places">
<tr>
<td data-bind="text: clientName"></td>
<td data-bind="text: name"></td>
<td data-bind="text: address1"></td>
<td data-bind="text: address2"></td>
<td data-bind="text: city"></td>
<td data-bind="text: county"></td>
<td data-bind="text: country"></td>
<td data-bind="text: dateAdded"></td>
</tr>
</tbody>
JS :
function Place(data) {
this.clientName = ko.observable(data.ClientName);
this.name = ko.observable(data.Name);
this.address1 = ko.observable(data.Address1);
this.address2 = ko.observable(data.Address2);
this.city = ko.observable(data.City);
this.county = ko.observable(data.County);
this.country = ko.observable(data.Country);
this.dateAdded = ko.observable(data.DateAdded);
}
function PlaceListViewModel() {
var self = this;
self.places = ko.observableArray([]);
$.ajax({
type: "POST",
url: "SubscriberDashboard/SearchPlaces",
contentType: "application/json",
data: { "SearchTerm": "" },
success: function (data) {
var temp = [];
$.each(data.places, function (placeData) {
temp.push(new Place(placeData));
});
self.places(temp);
console.log(self.places());
}
});
}
ko.applyBindings(new PlaceListViewModel());
데이터 미세로드, AJAX 호출 끝에 CONSOLE.LOG 장소 오브젝트의 배열을 보여준다. 마찬가지로 적절한 수의 <tr>
요소가 렌더링되지만 <td>
요소에는 텍스트가 없습니다.
편집 :
function PlaceListViewModel() {
var self = this;
self.places = ko.observableArray([]);
$.ajax({
type: "POST",
url: "SubscriberDashboard/SearchPlaces",
contentType: "application/json",
data: { "SearchTerm": "" },
success: function (data) {
$.each(data.places, function (placeData) {
self.places.push(new Place(placeData));
});
console.log(self.places());
}
});
}
당신이 self.places을 의미합니까 (온도)를 호출? 나는 새로운 코드로 질문을 추가하고 편집했다. (여전히 작동하지 않는다.) –
나의 사과! – Rajesh