2

是否可以單獨從javascript創建挖空綁定,即不編寫自定義html屬性?如何在運行時創建基本數據綁定(不帶數據屬性)

我很困擾我們現有的標記,不能添加data-bind等knockout.js依賴(HTML是以編程方式生成,並且沒有訪問渲染管道,請假設我已經用盡了我的選項在嘗試:)

我暫時追求的一個想法是在調用ko.applyBindings之前在運行時添加data-bind屬性。有一個首選方法嗎?如果它還實施類似於knockout.js if/visible的綁定,我也會接受一個備選的,充分記錄/流行/穩定的框架。

回答

2

Knockout 3.0(即將發佈,目前正在發佈候選版本)打開lot more ways to interact with the binding process,例如預處理節點和動態生成綁定的能力。看看Knockout.Punches來看看一些可能的例子。在這之間和已經提到的東西,如unobtrusiveclass綁定提供程序,你應該沒有任何麻煩,與你堅持任何標記。

也許值得指出的是,如果你想完全控制,那麼knockout有一個applyBindingsToNode函數,它接受綁定的JSON對象,雖然這不適用於後代元素的綁定。

+0

拳看起來很有用。儘管如此,我開始相信我所追求的是*真正*淘汰賽反模式 - 這意味着我實際上無法控制MVVM模式的「VM」部分:( –

+1

)爲了更具體一些,您無法控制View,它是MVVM的V部分。我認爲這種方法絕對是一個不太理想的路線 - 我想你也已經意識到了。但是,如果你真的沒有辦法修改HTML,那麼你別無選擇,只能做一些離題而已的事情。 – daedalus28

2

淘汰賽使我們能夠創建定製綁定提供者,我發現有幾個庫,幫助你做到這一點

你可以在這裏找到他們:

一個不使用DOM都:

https://github.com/tobio/knockout.unobtrusivebindingprovider

一個使用另一種方法:

https://github.com/rniemeyer/knockout-classBindingProvider

最後手段,如果他們沒有滿足您的需求,您可以使用jQuery修改DOM然後調用就可以了綁定......

+0

* unobtrusivebindingprovider *看起來很有用,雖然活動非常有限(FTFY:它*不會*使用DOM,但它不使用標記進行數據綁定,這正是我所追求的) –

-1

查看「不顯眼的事件處理「其他技術」下的Knockout文檔中的「部分」。

+0

我沒有看到我怎麼會使用[that](http://knockoutjs.com/documentation/unobtrusive-event-handling.html) - 它似乎提供了一種不引人注目的方式來委託交互處理程序('click'等),而不是一套完整的knockout.js綁定,包括'data-bind =「值:無論」和條件。我錯過了什麼嗎? –

+0

這不是一個答案。只要Knockout不改變其頁面的內容,這就是答案可能出現的方向。 – Eva

相關問題