0

下面的代码片段——导致一个空的列表框。谁能告诉我做错了什么?

<script src="/Scripts/knockout-2.1.0.debug.js"></script>
<script type="text/javascript">
var listEditorVM = function () {
    this.allItems = ko.observableArray(["Apple", "Banana", "Orange"]);
    alert(this.allItems().length);
};
ko.applyBindings(new listEditorVM());

</script>

<div>List items:</div>
<select multiple="multiple" data-bind="options: allItems"></select>

作品是 jsFiddle——不在浏览器中

4

1 回答 1

3

你需要ko.applyBindings在你的 DOM 准备好之后调用。您可以通过将该脚本块移动到页面底部或在类似 jQuery 的ready函数中调用它来做到这一点。

默认情况下,jsFiddle 将运行你的 js 代码“onload”,所以它会在你的元素存在之后发生。

于 2012-08-07T13:48:29.893 回答