2012-09-03 32 views
1

我如何去使用AUTORESIZE()的淘汰賽?knockout.js文字區域()

這裏是代碼,我的削減版本。

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

我還沒有能夠制定出如何調用自動調整大小在每個文字區域,使它們適合綁定到他們的文本。

基於artems回答,最終的解決方案是

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

輕微錯字,其jquery插件自動調整大小()函數,不AUTORESIZE()。 – Anton

回答

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> 
+0

感謝阿爾喬姆,它的工作,用小的變化。我必須使用更新而不是自定義綁定處理程序中的init。 – Anton