【发布时间】:2017-09-26 06:26:23
【问题描述】:
我在创建 observable 的 observable 数组时遇到问题。我在谷歌上搜索但没有找到解决方案。这可能是一些我无法注意到的简单事情,因为我是 Knockout 的新手。 但我有模型:
eventsModel = function () {
var self = this;
self.endTimeInMinutes = ko.observable();
self.events = ko.observableArray([]);
self.startTripTime = ko.observable();
self.endTripTime = ko.observable();
}
我想在我的数组中有一个可观察项,所以我编写了一个 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);
},
});
}
在这之后我有一个可观察的数组,但里面没有可观察的值。现在我尝试添加我的 AJAX 方法:
events.events(ko.utils.arrayMap(eventsArray, function(eve) {return new eventItemViewModel(eve); }));
但是如果我对此执行console.log,那么我将得到对象数组,并且在每个对象中都有一个BeginInMinutes 和类型,但它的值类似于function d()... etc。
我真的被它困住了,我相信我在某个地方犯了一些非常简单的错误。
谢谢你帮助我。
【问题讨论】:
-
您到底想要什么,您希望
observableArray中的项目是observable还是只是js object?我觉得这个问题不是很清楚 -
顺便说一句,你得到
function d()的结果证明你在observableArray中有一个observable对象。是你想要的吗?? -
把你用于Console.log的代码,你必须调用那个函数来获取
BeginInMinutes的数据 -
好的,所以如果它是一个证据,那么问题可能是如何显示确切的数据而不是显示函数 d().... 在 console.log 中,数据位于 [[范围]] -> 闭包。所以也许我的问题是要显示这个正确的数据,如果你说它已经是 observableArray 的 observables。
-
您可以通过以下命令
BeginInMinutes()显示您的数据,只需在属性名称中添加括号即可。