我在 knockout.js 中的条件渲染遇到了一些问题。我的视图模型中有一个observableArray
,它是使用ko.utils.arrayMap()
. 在我的 javascript 代码中,输出该数组的长度会返回预期的长度。但是,当我尝试在我的视图中输出相同的长度时,它始终为 0。
这是我的视图代码:
<!-- ko if: people().length == 0 -->
<p data-bind="text: people().length"></p>
<!-- always outputs 0 -->
<!-- /ko -->
<!-- ko if: people().length > 0 -->
<p data-bind="text: people().length"></p>
<!-- never reaches this -->
<!-- /ko -->
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));