2014-09-03 2 views
1

Я пытаюсь выбрать все флажки, используя нокаут. вот мой ViewModelВыбрать все флажок с помощью нокаута

function MasterViewModel() { 
var self = this; 
self.People = ko.observableArray([new Person("Test1", false), new Person("Test2", false)]); 
self.selectedAllBox = ko.observable(false); 

self.selectedAllBox.subscribe(function (newValue) { 
    if (newValue == true) { 
     ko.utils.arrayForEach(self.People(), function (item) { 
      item.sel = true; 
     }); 
    } else { 
     ko.utils.arrayForEach(self.People(), function (item) { 
      item.sel = false; 

     }); 
    } 
}); 

} 
Person = function (name, sel) { 
this.Name = name; 
this.sel = sel; 
} 

ko.applyBindings(new MasterViewModel()); 

Вот мой взгляд

<table> 
<thead> 
    <tr> 
     <th>Name</th> 
     <th> 
      <input type="checkbox" data-bind="checked: selectedAllBox" /> 
     </th> 
    </tr> 
</thead> 
<tbody data-bind="foreach: $data.People"> 
    <tr> 
     <td data-bind="text: Name"></td> 
     <td class="center"> 
      <input type="checkbox" data-bind="checked: sel" /> 
     </td> 
    </tr> 
</tbody></table> 

Я не могу получить его, чтобы проверить все. Вот мой Fiddle. Можете ли вы сказать мне, что я делаю неправильно?

ответ

2

Вам нужно сделать sel свойства наблюдаемого в Person:

Person = function (name, sel) { 
    this.Name = name; 
    this.sel = ko.observable(sel); 
} 

И вам нужно установить это наблюдаемые ИНТ на selectedAllBox.subscribe:

self.selectedAllBox.subscribe(function (newValue) { 
    if (newValue == true) { 
     ko.utils.arrayForEach(self.People(), function (item) { 
      item.sel(true); 
     }); 
    } else { 
     ko.utils.arrayForEach(self.People(), function (item) { 
      item.sel(false); 

     }); 
    } 
}); 

JSFiddle Demo.

+0

Я знаю, что я могу сделать его наблюдаемым, но я не могу, поскольку я получаю эти данные откуда-то еще – Happy

+0

, тогда вам нужно создать модель, которая обертывает человека и имеет наблюдаемые проэфиры. Он не будет работать с наблюдаемыми свойствами. – nemesv

+0

Как я могу его обернуть? Я попытался использовать someObservableArray (self.People), но не работает. – Happy

Смежные вопросы