2012-02-21 60 views
1

我有一個自定義的數據綁定這樣的:應用數據綁定到DOM元素的自定義數據綁定

ko.bindingHandlers.calendar = { 
      init: function(element, valueAccessor) { 
       var value = valueAccessor() || {};    
       var calType = $('<select style=""><option value="gregorian">Miladi</option><option value="islamic">Hicri</option><option value="rumi">Rumi</option></select>');                

       // Need to something to apply this binding for the calType variable 
       calType['attr']('data-bind', 'chosen : true'); 

       .... 
       .... 

       $(element).before(calType); 
      } 
}; 

ko.bindingHandlers.chosen = { 
       init: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
        $(element).chosen(); 
       }, 
       update: function(element, valueAccessor, allBindingsAccessor, viewModel) { 
        $(element).trigger("liszt:updated"); 
       } 
}; 

我想申請選擇日曆結合內部動態創建的DOM元素上結合。有什麼辦法可以做到這一點?

+0

相當複雜...你確定你需要這個...? – Madman 2012-02-21 15:23:03

+0

我可以做到這一點不同,你有什麼想法? – Luffy 2012-02-21 17:04:23

+0

也許最好事先創建所有必需的元素並映射到VM中的某些條件屬性,然後在自定義綁定中執行操作或讓ko處理它。寫更多的細節或問更多的一般問題,我們會找到另一種方法如何解決您的問題 – Madman 2012-02-21 20:54:37

回答

2

你應該調用「ko.applyBindings(viewModel);」在創建動態創建的dom元素之後。

+0

您好,我檢查了您的建議,但那不工作。它給了我一個不屬於viewModel這部分的異常。 「未捕獲的錯誤:無法解析綁定。」 消息:TypeError:Object#沒有方法'enabled';' ko.applyBindings(x)嘗試綁定所有viewModel,但我只需要該元素。你必須考慮到這個代碼可能會在初始綁定之後運行。 – Luffy 2012-02-21 17:03:23

+0

我也試過ko.applyBindings(viewModel,x),但又得到了另一個異常。這次它選擇的plugin.Uncaught TypeError:無法設置未定義屬性'disabled' h.search_field_disabled。必須挖掘選定的庫來找出實際問題。 – Luffy 2012-02-21 17:34:25

+0

最後我可以通過ko.applyBindings(viewModel,x)來做到這一點。感謝您的線索。 – Luffy 2012-02-21 20:42:44