Я пытаюсь показать/скрыть флажок на основе выбора списка выбора для каждой строки в таблице. Параметры раскрывающегося списка отображаются правильно, но вычисляемая функция не обновляет видимость флажка после изменения значения параметра. Ниже мой код... Можете ли вы, ребята, сказать мне, что я делаю неправильно.
http://jsfiddle.net/euh926a7/10/
<table width="95%" cellspacing="0" >
<thead>
<tr class="freeze">
<th> Employee ID </th>
<th> Full Name </th>
<th> Leap Leader </th>
</tr>
<tbody data-bind='foreach: staffLists'>
<tr>
<td data-bind="text: employeeId"></td>
<td><select data-bind="options: $parent.positionOptions, optionsText: 'text', optionsValue: 'value', value: position, optionsCaption: 'Select one...',optionsAfterRender: $parent.setOptionDisable"></select></td>
<td><input type="checkbox" data-bind="checked : leapLeader, visible : showleap" /></td>
</tr>
</tbody>
</table>
ниже мой js
var scLogic = new Array([]);
scLogic.test1 = [false, false, false, ''];
scLogic.test2 = [true, true, true, 'logic'];
function viewModel(){
var self = this;
self.staffLists = ko.observableArray([]);
for(var i=0; i<2;i++)
self.staffLists.push(new staffModel(i));
self.positionOptions = new Array(
{ value: 'test1', text: 'Testing 1', disable: false},
{ value: '', text: '--- Test 2 ---', disable: true},
{ value: 'test2', text: 'Testing 2', disable: false}
);
self.setOptionDisable = function(option, item) {
if (!item) return;
ko.applyBindingsToNode(option, {
disable: item.disable
}, item);
};
}
ko.applyBindings(new viewModel());
function staffModel(i){
var self = this;
self.recordId = 'rec' + i;
self.employeeId = 'emp' + i;
self.position = ko.observable('test' + i);
self.leapLeader = ko.observable(false);
self.showleap = ko.computed(function() {
return scLogic[self.position] === undefined ? false :
scLogic[self.position][0];
});
}
[self.postion]
есть опечатка. Я также думаю, что, поскольку это наблюдаемое, вы должны вызвать его:[self.position()]
чтобы получить его значение - person msokrates   schedule 19.07.2018