使用jquery插件autoresize()在foreach中的knockout.js textareas

时间:2012-09-03 14:57:49

标签: javascript jquery knockout.js autoresize

如何在淘汰赛中使用autoresize()?

这是我所拥有的代码的缩减版本。

<div data-bind="foreach: Rows" >
  <textarea data-bind="value: RowText" ></textarea>
</div>

我还没有能够解决如何在每个textareas上调用autoresize以使它们适合绑定到它们的文本。

基于artems答案,最终的解决方案是

$(document).ready(function () {
        ko.bindingHandlers.jqAutoresize = {
            update: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                $(element).autosize();
            }           
        };
}

1 个答案:

答案 0 :(得分:1)

您可以创建自定义绑定,将autoresize()应用于所有textareas

ko.bindingHandlers.jqAutoresize = {
    init: function(element, valueAccessor) {
        var options = ko.utils.unwrapObservable(valueAccessor()) || {};

        $(element).autoResize(options);
    }
};

更新您的观点:

<div data-bind="foreach: Rows" >
  <textarea data-bind="jqAutoresize: {}, value: RowText" ></textarea>
</div>