Knockoutjs没有将数组转换为可观察数组?

时间:2013-02-19 07:33:36

标签: javascript knockout.js

我正在使用这个knockoutjs教程将数组转换为可观察数组。 http://knockoutjs.com/documentation/observableArrays.html。但是给定的以下行给了我一个零长度的数组。

var anotherObservableArray = ko.observableArray([
    { name: "Bungle", type: "Bear" },
    { name: "George", type: "Hippo" },
    { name: "Zippy", type: "Unknown" }
]);

为什么anotherObservableArray不起作用?

2 个答案:

答案 0 :(得分:3)

您应该访问基础数组的长度而不是可观察数组本身。
anotherObservableArray().length会给你合适的长度。

检查这个小提琴:http://jsfiddle.net/jfSG8/

答案 1 :(得分:2)

您尚未告诉我们您如何使用var anotherObservableArray,但以下情况应该有效:

<ul data-bind="foreach: anotherObservableArray">
    <li data-bind="text: name"></li>
</ul>

使用knockout / js:

var viewModel = function() {
  this.anotherObservableArray = ko.observableArray([
    { name: "Bungle", type: "Bear" },
    { name: "George", type: "Hippo" },
    { name: "Zippy", type: "Unknown" }
  ]);
};

ko.applyBindings(new viewModel());

请参阅this jsfdiddle

请注意,我没有使用var来存储可观察数组,而是将其作为视图模型上的属性创建。