對這個問題的蛛絲馬跡似乎都很難找到,我開始覺得它必須是明顯的(和我想的東西),沒用,還是不可能的:創建2路與觀察到的插件自定義綁定
我使用observables(ko.observables())獲得雙向綁定的東西。 但是,所有這個括號是一個真正的痛苦。所以當我使用迪朗達爾,我雖然我給了observable
插件一試:http://durandaljs.com/documentation/Binding-Plain-Javascript-Objects.html
(備案,我也試過這一個:http://blog.stevensanderson.com/2013/05/20/knockout-es5-a-plugin-to-simplify-your-syntax/)
兩者都與基因敲除的value
結合工作正常。
我的問題是我有我的應用程序的多個基因敲除自定義綁定,我不知道如何更新這些自定義綁定中不是ko.observable()的可觀察屬性。
在我結合我通常會做到這一點:
ko.bindingHandlers.testBinding = {
init: function(element, valueAccessor) {
var myObservable = valueAccessor();
// here I could detect if it's an observable or a POJO
// ... how to know if it's a property ???
$(element).blur(function() {
// ... how to write to myObservable if it's a writable property
// ... and not a ko.observable() ???
myObservable($(element).val());
});
},
update: function(element, valueAccessor) {
$(element).val(ko.unwrap(valueAccessor()));
}
};
然而,隨着觀測,我明白我需要的屬性的參考基礎對象和名執行更新。 (我可以得到前者,但如何讓後者?)
我進去看了value
淘汰賽的結合,試圖瞭解,但沒有更多的成功......
會有人有一個簡單的例子這個可觀察插件的外觀如何? 任何線索將不勝感激。
感謝
「我不明白你是如何更新不是一個ko.observable()的可觀察屬性」 - 你能澄清這一點嗎?這很混亂。 – xdumaine
使用ES5,您可以在具有getter/setter(因此'可觀察')的JS對象上創建屬性。他們不是ko.observable(),但仍然有能力在沒有圓括號的情況下進行雙向綁定。但在一個自定義綁定中,我沒有得到如何寫入這樣的屬性。 (除了在自定義綁定中,它在其他地方起作用) – David