我有一张如下表:
<tbody data-bind="foreach: tasks">
<tr>
<td>
<span data-bind="text: goal" />
</td>
<td>
<input type="text" data-bind="value: note ,
disable: !($data.isAllowedForMember)" />
</td>
</tr>
</tbody>
我想在isAllowedForMember = false时禁用文本框。但每次它的制作音符禁用(天气isAllowedForMember = true或false)。
这是我的viewmodel
//viewmodel
function GoalSheetViewModel() {
self.tasks = ko.observableArray([]); //tasklist
self.note = ko.observable();
self.isAllowedForMember = ko.observable();
self.IsAllowedToChange = function () {
$.ajax({
success: function (results) {
self.isAllowedForMember(results.d);
},
})
};
};
答案 0 :(得分:0)
如果你在条件中使用它,你应该打开observable
:
<input type="text" data-bind="value: note , disable: !$parent.isAllowedForMember()" />
以下文章可以帮助您了解有关淘汰赛的一些有用信息:http://www.knockmeout.net/2011/06/10-things-to-know-about-knockoutjs-on.html
编辑:
isAllowedForMember
是父上下文的成员,因此您应该使用$parent
对象来访问它:
<input type="text" data-bind="value: note , disable: !$parent.isAllowedForMember()" />
答案 1 :(得分:0)
正如Artem所说,你需要打开observable,但更好的是使用带有名称的计算器来说明业务规则意味着什么
像
this.readonlyMember = ko.computed(function() {
return this.isAllowedForMember();
}, this);
但是,自从你获得
后,你的模型也会出现问题ReferenceError:isAllowedForMember未定义