2012-06-28 4 views
0

Я пишу пользовательскую привязку для использования $.expandingTextarea с Knockout.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"); 
    } 
} 

К сожалению, это не работает, как ожидалось - то есть при внесении изменений в текстовом поле, соответствующая модель представления не обновляются , Вот проблема jsFiddle that illustrates.

Как создать настраиваемую привязку KO для расширения плагина расширения Textarea?

ответ

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"); 
    } 
}; 

Я надеюсь, что это помогает кто-то другой! :)