javascript - knockout : afterRender not being called in a foreach template binding

标签 javascript knockout.js

我正在尝试使用 Knockout 的 afterRender 绑定(bind),但我引用的函数从未被调用。

我有嵌套的 View 模型: vmConceptsvmConcept,其中 vmConcepts.Concepts = vmConcept 对象数组。

vmConcept(内部模型)有一个函数 self.Rendered = function (elmnt) {...

我将 vmConcepts(外部模型)绑定(bind)到以下标记(您可以看到这调用了嵌套模板):

<ul>
    <!-- ko template: { name: 'concept-template', foreach: { data: Concepts, afterRender: Rendered } } --><!-- /ko -->
</ul>

我的理解是,应该为传递给 concept-template 模板的每个 vmConcept 对象(在 vmConcepts.Concepts 中)调用此 afterRender 绑定(bind),但事实并非如此发生。我什至将相同的 Rendered 函数添加到 vmConcepts 并且也没有被命中。

我已经将其作为 data-bind 绑定(bind)和虚拟绑定(bind)进行了尝试。

我错过了什么?

最佳答案

你的绑定(bind)搞砸了。 foreach 内部模板与 foreach 绑定(bind)不同。在模板上呈现的 after 将在每个 child 之后触发。

试试这个

<ul>
    <!-- ko template: { 
        name: 'concept-template', 
        foreach: Concepts, 
        afterRender: Rendered 
    } --><!-- /ko -->
</ul>

我这里有一个工作示例: http://jsfiddle.net/4t94G/1/

关于javascript - knockout : afterRender not being called in a foreach template binding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658543/

相关文章:

javascript - 学习 JavaScript、jQuery 和 JSON

knockout.js - 随着绑定(bind)属性的变化,自动排序 ko.observableArray

javascript - 将我的搜索过滤器链接到列表项 : knockout js

javascript - 当textarea的值改变时是否执行任何事件?

javascript - 用户数组长度和值就位

javascript - 用jQuery播放声音通知

javascript - 对于 Internet Explorer,“控制台”是未定义的错误

javascript - 在 Knockout JS 中使用按键事件

javascript - 使用 ko.mapping 问题映射 Json 字符串

javascript - 从 "outside"以编程方式设置knockout.js值