自动调整挖空自定义绑定在加载时自动调整大小

时间:2013-02-25 08:18:53

标签: jquery knockout.js autosize

我有knockout的自定义jquery autosize绑定,我希望在页面加载时自动调整大小。

以下是问题的fiddle

代码示例:

 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插件的自动调整事件,但我无法弄清楚何时何地。

由于

1 个答案:

答案 0 :(得分:2)

我可能会误解这个问题,但这至少可以在FF中使用

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

我删除了更新功能,让autosize在引擎盖下进行操作

我还使用值绑定来更新值

ko.applyBindingsToNode(element, { value: valueAccessor() });