我對以下行爲在自定義綁定knockout.js的難倒:定製結合valueAccessor有意想不到的結果
ko.bindingHandlers.customBinding = {
update: function(element, valueAccessor, allBindingsAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
console.log(JSON.stringify(value));
}
}
ko.applyBindings({
someText: ko.observable("inital value")
});
和
<input type="text" data-bind="value: someText, customBinding: {some: 'option'}">
的valueAccessor()
應該給我的視圖模型屬性與元素的值綁定(即可觀察到的someText
)。引用文檔:
valueAccessor
- JavaScript函數,您可以調用該函數以獲取此綁定中涉及的當前模型屬性。在不傳遞任何參數的情況下調用此函數(即調用valueAccessor()
)以獲取當前的模型屬性值。
然而,它真的不是返回綁定值,即{some: 'option'}
。
我錯過了什麼?
啊我明白了。這就說得通了。它沒有按照我預期的方式工作,但它與'value'綁定工作的方式一致。這與文檔說明它的方式不一致。 'valueAccessor'將是您在綁定中傳遞的任何內容,不一定是「當前模型屬性」。謝謝。 – Tomalak 2013-03-21 13:25:39
是的。你傳給你的任何東西都可以從allBindingsAccessor中獲取。我已經做了一個快速示例,我在這裏傳遞了一個名爲'source'的屬性中的字符串:http://jsfiddle.net/j5y8H/3/(或者您可以拿起Grim指出的'value'屬性) – 2013-03-21 13:38:01