2013-07-02 34 views
3

我正在尋找通過knockout.js啓用或禁用範圍(塊的所有子元素)的最佳方式。理想情況下,它應該是這樣的:Knockout.js - 爲範圍啓用綁定

<div data-bind="enable:isEnabled()"> 
    <input type="text" data-bind="value: val1" /><br> 
    <input type="text" data-bind="value: val2" /> 
</div> 

此代碼是不是現在(http://jsfiddle.net/NquQK/)工作。我怎樣才能實現呢?也許現成的綁定或插件已經存在這項任務?

回答

2

一個簡單的自定義綁定可以完成你所需要的:

KO:

ko.bindingHandlers.enableAll = { 
    update: function(elem, valueAccessor) { 
     var enabled = ko.utils.unwrapObservable(valueAccessor()); 

     ko.utils.arrayForEach(elem.getElementsByTagName('input'), function(i) { 
      i.disabled = !enabled; 
     }); 
    } 
}; 

HTML:

<div data-bind="enableAll: isEnabled()"> 
    <input type="text" data-bind="value: val1" /><br> 
    <input type="text" data-bind="value: val2" /> 
</div> 

http://jsfiddle.net/NquQK/2/

+0

'if'結合皮塊,而不是禁用: http://jsfiddle.net/SDaUW/1/ – Ildus

+0

你想通過使用'en能夠綁定在容器元素中? –

+0

是的。我需要可見的元素,但禁用 – Ildus