0

我刚刚开始使用 knockout.js。我有一个foreach这样的绑定,效果很好:

<ul data-bind="foreach: people">
   <li> .... </li>
</ul>

people是我传递给的模型的一部分ko.applyBindings。根据文档,以下内容也应该起作用:

<ul data-bind="foreach: {data: people}"> 

但事实并非如此。该列表仍然为空,但我在浏览器的错误窗口中看不到任何错误。任何暗示我可能做错了什么?两个电话之间是否有一些我看不到的细微差别?

我的想法是将处理程序传递给afterAddto foreach。因此我需要第二种方式来调用它。

4

2 回答 2

0

我相信您实际上是在寻找模板绑定。Foreach 是它的快捷方式,但如果你需要 afterAdd ,你可以使用完整的绑定:

<ul data-bind='template: { foreach: people,
                        afterAdd: myPostProcessingLogic }'> </ul>
于 2012-05-21T20:13:10.973 回答
0

仅作记录:解决方案有点奇怪,问题的根源是我的代码中的另一个错误。people通过 初始化ko.observableArray。当我从服务器获得新数据时,我像这样更新我的模型:

model.people(ko.observableArray(newData));

现在我知道这是正确的方法:

model.people(newData);

无论出于何种原因,第一个版本仍然适用于某些模板绑定规范,但不是全部。第二个在每种情况下都可以正常工作。

于 2012-05-23T09:42:07.153 回答