2012-06-28 93 views
0

我正在編寫一個自定義綁定,以使用$.expandingTextareaKnockout.js

繼優秀文章Another Look at Custom Bindings for KnockoutJS,我希望這將是簡單的:

ko.bindingHandlers.expandingTextarea = { 
    init: function(element, valueAccessor) { 
    $(element).expandingTextarea(); 
    }, 
    update: function(element, valueAccessor, aBA, vm) { 
    ko.bindingHandlers.value.update(element, valueAccessor, aBA, vm); 
    $(element).expandingTextarea("resize"); 
    } 
} 

不幸的是預期,這並不工作 - 即更改時textarea的取得,不會更新相應的視圖模型。這是一個jsFiddle that illustrates的問題。

如何爲expandingTextarea插件創建KO自定義綁定?

回答

1

這裏是the solution on jsFiddle,即還增加值綁定的init(其中有代碼,以便收集由valueUpdate參數指定的事件):

ko.bindingHandlers.expandingTextarea = { 
    init: function(element, valueAccessor, aBA, vm) { 
     $(element).expandingTextarea(); 
     ko.bindingHandlers.value.init(element, valueAccessor, aBA, vm); 
    }, 
    update: function(element, valueAccessor, aBA, vm) { 
     ko.bindingHandlers.value.update(element, valueAccessor, aBA, vm); 
     $(element).expandingTextarea("resize"); 
    } 
}; 

我希望這可以幫助別人! :)