Javascript 为什么一个可观察数组在我的模板上长度为0,而在我的JS中却不是knockout.JS?
我在knockout.js中使用条件渲染时遇到一些问题。我的视图模型中有一个Javascript 为什么一个可观察数组在我的模板上长度为0,而在我的JS中却不是knockout.JS?,javascript,knockout.js,Javascript,Knockout.js,我在knockout.js中使用条件渲染时遇到一些问题。我的视图模型中有一个observearray,它是使用ko.utils.arrayMap()创建的。在我的javascript代码中,输出该数组的长度将返回预期的长度。然而,当我试图在视图中输出相同的长度时,它总是0 以下是我的查看代码: Javascript: var data = [ { firstName: "Bob", lastName: "Smith" }, {
observearray
,它是使用ko.utils.arrayMap()
创建的。在我的javascript代码中,输出该数组的长度将返回预期的长度。然而,当我试图在视图中输出相同的长度时,它总是0
以下是我的查看代码:
Javascript:
var data = [
{
firstName: "Bob",
lastName: "Smith"
},
{
firstName: "John",
lastName: "Doe"
},
{
firstName: "Jane",
lastName: "Doe"
}
];
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
function ViewModel(data) {
var self = this;
self.people = ko.observableArray(ko.utils.arrayMap(data, function(i) {
return ko.observable(new Person(i.firstName, i.lastName));
}));
console.log(self.people().length); //Outputs 3, as expected
}
ko.applyBindings(new ViewModel(data));
如果替换视图模型中的可观察对象而不是指定给它,则可能会发生这种情况。您可能有
self.people=ko.observearray()代码>在视图模型构造函数中。稍后,当您实际获得数据时,您有self.people=ko.observearray(数据)代码>
在本例中,视图模型知道数据,但视图绑定到早期的可观察对象,而不知道后期的可观察对象。相反,你应该有self.people(数据)代码>设置数据。您的代码对我有效:…什么?也许这是其他地方的问题。在我的实际代码中,数据以json的形式来自服务器,并且我的可观察数组被正确填充。console.log(people().length)输出7,但在视图中输出0。谢谢!那正是我的问题