KnockoutJS模板忽略'controlsDescendantBindings'

时间:2012-07-18 15:25:52

标签: knockout.js template-engine knockout-2.0

我有一部分我不想渲染的模板,所以我尝试过使用“controlsDescendantBindings”as the documentation proposes

我做了一个示例,其中模型包含两个属性,“Parent”和“Child”。必须显示父级,但不得渲染Child。

我正在使用KO Programmatic plugin

它适用于普通绑定:http://jsfiddle.net/vtortola/QXJVb/

使用模板时有效:http://jsfiddle.net/vtortola/uKLnm/3/

以编程方式使用KO时,它不起作用:http://jsfiddle.net/vtortola/XGApK/

有人知道解决方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

两件事。

  1. 你正在使用knockout 2.0和jQuery tmpl。这些不能很好地融合在一起。 Knockout自2.0以来就内置了自己的模板引擎。 jQuery tmpl已被弃用,我认为它的创建者也不再开发它了。你不应该使用它。
  2. 你的第二个小提琴没有打ko.applyBindings,这是必要的一步。你的第一个工作是因为你有这个电话。
  3. 这是your fiddle,使用模板和停止绑定。这是the fiddle使用jQuery方法

    注意
    Knockout提供了自己的方法来限制绑定到特定的div。 KO Programmatic看起来有点......不必要。以下是the documentation page的摘要:

      

    或者,您可以传递第二个参数来定义要搜索数据绑定属性的文档的哪个部分。例如,ko.applyBindings(myViewModel,document.getElementById('someElementId'))。这会将激活限制为具有ID someElementId及其后代的元素,如果您希望拥有多个视图模型并将每个视图模型与页面的不同区域相关联,这将非常有用。

    <强>更新

    正如所承诺的那样,屏幕截图显示这些小提琴按照你的描述工作。

    常规方法: jsFiddle

    jQuery / KO编程方法: enter image description here