관찰 가능 어레이의 끝 부분에 데이터를 추가하려고하지만 예상대로 작동하지 않습니다. 나는 그것이 사소한 것이지만 나는 단지 주위에 내 머리를 얻을 수 없다는 것을 내기. 내가 뭐하는 거지ko.observablearray 끝 부분에 데이터 추가
:
self.businesses = ko.observableArray();
function Business(business) {
var self = this;
self.BusinessID = ko.observable(business.BusinessID);
self.Type = ko.observable(business.Type);
self.Location = ko.observable(business.Location);
}
/*ajax get array of businesses as follows:
[
{
"$id": "1",
"BusinessID ": 62,
"Type": "Data",
"Location": "Data"
},
{
"$id": "2",
"BusinessID ": 63,
"Type": "Data",
"Location": "Data"
},
{
"$id": "3",
"BusinessID ": 64,
"Type": "Data",
"Location": "Data",
} ]
*/
var mappedBusinesses = $.map(data, function (business) { return new Business(business) });
self.businesses(mappedBusinesses);
이 모든 작품은 예상대로와 obersablearray이 채워집니다.
그러나 다른 비즈니스를 추가하면 작동하지 않습니다. 내가 (newBusiness로)이 반환 아약스 호출하는 경우 예를 들어, :
{
"$id": "1",
"BusinessID ": 68,
"Type": "Data",
"Location": "Data"
}
을하고 내가 할 :
self.businesses().push(newBusiness);
그것은 "개체"가 아닌 비즈니스로 배열에 추가합니다.
var bus = $.map(newBusiness, function (business) { return new Business(business) });
self.businesses().push(bus);
하지만 난 JS 콘솔 "catch되지 않은 형식 오류에 오류를 얻을 : 그래서 나는 내가 할 것이라고 생각
그래서 나는 새로운 VAR를 만들어 브래킷을 추가 널 (null)의 속성을 읽을 수 없습니다 'BusinessID' [] in이고 관찰 가능한 배열에 추가되지만 "Business"객체가 아니라 끝에있는 "Array [1]"객체로 추가되며 다른 객체와 마찬가지로 작동하지 않습니다. 다음과 같은 코드 :var newBus = {
BusinessID: newBusiness.BusinessID,
Type: newBusiness.Type,
Location: newBusiness.Location
}
var bus = $.map(newBus, function (business) { return new Business(business) });
self.businesses().push(bus);
언급 한 바와 같이 이것은 관찰 가능한 배열에 추가되지만 실제로 "비즈니스"개체로 추가되지는 않습니다 ct가 아니라 "array [1]"객체로 사용됩니다.
나는 그렇게 기본적인 것이지만 그냥 작동시키지 못할 것이라고 생각합니다!
self.businesses.push(newBusiness);
이 페이지를 참조하십시오
self.businesses().push(newBusiness);
관찰 가능한 배열이 자신의 배열 기능을 가지고, 당신은 단지이 (NO 괄호)를 수행해야합니다
JSON에서 BusinessID 속성 뒤에 추가 공백이 있음을 알 수 있습니다. 이것이 문제를 일으킬 수 있는지 확실하지 않습니다. 이 공백이 의도 된 것입니까? –
'dperry'는'()'및 push를하지 않고 시도해보아야합니다. 그렇지 않으면 저희에게 알려주십시오. 건배 –
죄송합니다 - 공백은 복사/편집/붙여 넣기입니다 (너무 커서 전체 요청을 표시하고 싶지 않습니다).()를 사용하지 않고 시도했지만 오류가 발생했습니다. Uncaught ReferenceError : 바인딩을 처리 할 수 없습니다. "text : function() {return Type}" 메시지 : 유형이 정의되지 않았습니다. "foreach : businesses"및 tr 요소 "text : Type"이있는 테이블을 가지고 있으므로 HTML 페이지에서 가져온 것 같습니다. – user3129594