2013-02-25 53 views
0

我有一個自定義knockout綁定裝置,我希望在加載頁面時自動裝載。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插件的autosize事件,但我無法弄清楚何時何地。

感謝

回答

2

我有可能誤解了這個問題,但是這個工作在FF ATLEAST

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

我刪除了更新功能,讓自動調整做引擎蓋

下它的事我也使用價值綁定更新值

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

感謝男人的魅力 – Armand 2013-02-25 12:29:05

+0

上面的例子不起作用,因爲jquery auto resize的路徑被解析爲404.即使使用正確的路徑,它可以在第一次加載時工作,但在嘗試鍵入文本區域時似乎會崩潰。不知道海報,但這是我需要的自動調整大小。 http://jsfiddle.net/3p9bj/24/ – MrB 2013-09-15 02:48:54