2012-07-18 66 views
0

我有我的模板的一部分,我不想被渲染,所以我试着用“controlsDescendantBindings”as the documentation proposesKnockoutJS模板忽略'controlsDescendantBindings'

我已经做了一个例子,其中模型包含两个属性“Parent”和“Child”。必须显示父级,但子级必须未呈现。我正在使用KO Programmatic plugin

它的工作原理整齐正常绑定:http://jsfiddle.net/vtortola/QXJVb/

它使用模板时,工作原理:http://jsfiddle.net/vtortola/uKLnm/3/

而且编程方式使用KO的时候它不工作:http://jsfiddle.net/vtortola/XGApK/

是否有人知道一种解决方法?

谢谢。

+0

你的第二和第三小提琴是相同的。 – Tyrsius 2012-07-18 16:10:46

+0

我已修复它,它出现与正常模板的作品,但程序化的KO它没有。 – vtortola 2012-07-18 17:27:23

回答

0

两件事。

  1. 您使用的是knockout 2.0和jQuery tmpl。这些不能很好地发挥。 Knockout自2.0版本开始就有自己的模板引擎。 jQuery tmpl已被弃用,我认为它也不再受其创建者的开发。你不应该使用它。
  2. 你的第二个小提琴没有叫ko.applyBindings,这是一个必要的步骤。你的第一个工作,因为你有这个电话。

这里是your fiddle,使用模板和停止绑定。这里使用jQuery方法

注意
淘汰赛提供了自己的限制结合具体div的方法是the fiddle。 KO Programmatic看起来有点......没有必要。以下是来自the documentation page的片段:

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

更新:

正如所承诺的,屏幕截图,并将这些小提琴工作你描述。

常规方法: jsFiddle

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

+0

1.我分出另一个小提琴,这就是为什么该文件出现引用。 2。他们实际上工作,你没有看到父母和孩子的财产约束?这只是不尊重'controlsDescendantBindings'。它使用编程式KO插件。 – vtortola 2012-07-18 17:26:57

+0

我不知道你在说什么。当我看到我发布的两条小提琴时,HTML显示“父母”,没有别的。如果你想要,我可以截图。 – Tyrsius 2012-07-18 17:49:48

+0

如果它显示父,并没有其他意味着它工作正常。如果它显示父母和孩子,这意味着绑定正在工作,但它不符合'controlsDescendantBindings'选项。 – vtortola 2012-07-18 18:56:36