Autosize knockout настраиваемая привязка autosize при загрузке

У меня есть пользовательская привязка нокаута для авторазмера jquery, которую я хочу иметь авторазмер при загрузке страницы.

Вот скрипка вопроса

Пример кода:

 ko.bindingHandlers.autogrow = {

 init: function (element, valueAccessor, allBindingsAccessor) {

     ko.utils.registerEventHandler(element, 'focusout', function () {
         var observable = valueAccessor();
         observable($(element).val());
     });

     ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
         $(element).data('autosize').remove();
     });

     $(element).autosize({ append: "\n" });

     $(element).focus(function () {
         $(element).trigger('autosize');
     });
 },

 update: function (element, valueAccessor) {
     var value = ko.utils.unwrapObservable(valueAccessor());
     $(element).val(value);
     $(element).trigger("autosize");
   }
};

var vm = {};
vm.Data = ko.observable("This is a lot of text and has to display correctly");

ko.applyBindings(vm);

Пример HTML:

<textarea id="autogrow" class="text-nm span2" data-bind="autogrow: Data"></textarea>

Что происходит, у меня много текста, который я хочу отобразить в текстовой области, но его количество каждый раз меняется, поэтому у меня нет заданного количества, которое будет отображаться, что я знаю заранее. Что я хочу сделать, так это после того, как были применены привязки выбивания, я хочу вызвать событие autosize подключаемого модуля autosize, но я не могу понять, когда и где.

Спасибо

1 ответ

Решение

Я мог бы неправильно понять вопрос, но это работает в FF по крайней мере

http://jsfiddle.net/3p9bj/13/

Я убрал функцию обновления и позволил autosize делать свое дело под капотом

Я также использую привязку значения для обновления значения

ko.applyBindingsToNode(element, { value: valueAccessor() }); 
Другие вопросы по тегам