2012-07-18 170 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