我在创建可观察的可观察数组时遇到问题。我搜索谷歌但没有找到解决方案。我可以注意到它可能很简单,因为我是Knockout的新手。 但我有模特:
eventsModel = function () {
var self = this;
self.endTimeInMinutes = ko.observable();
self.events = ko.observableArray([]);
self.startTripTime = ko.observable();
self.endTripTime = ko.observable();
}
我想在我的数组中有一个observables项目,所以我写了一个ViewModel并绑定了模型。
eventItemViewModel = function(o) {
var self = this;
self.BeginInMinutes = ko.observable(o.BeginInMinutes);
self.Type = ko.observable(o.Type);
};
var events = new eventsModel();
ko.applyBindings(events);
我正在使用AJAX获取数据:
function GetEvents() {
$.ajax({
url: "Contact.aspx/GetEvents",
async: true,
type: "POST",
contentType: "application/json",
dataType: "json",
success: function (data) {
var temp = data.d;
endTimeInMinutes = temp["EndInMinutes"];
eventsArr = temp["Events"];
eventsArray = JSON.parse(JSON.stringify(eventsArr));
events.events(eventsArray);
},
});
}
在此之后我有一个可观察的数组,但里面没有observables值。现在我尝试添加我的AJAX方法:
events.events(ko.utils.arrayMap(eventsArray, function(eve) {return new eventItemViewModel(eve); }));
但是,如果我对此console.log
进行了操作,那么我将获得一组对象,并且在每个对象中都有BeginInMinutes
和Type,但它的值类似于{{1 }}
我真的被它搞砸了,我相信我在某个地方犯了一些非常简单的错误。
感谢您的帮助。
答案 0 :(得分:1)
你已经有一个observableArray
内有observable
元素,你的问题就在于获取这些价值
使用此代码获取数组中第一个元素的实际值。
console.log(events.events()[0].BeginInMinutes());