0

我有一个如下表:

 <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
 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);
            },
        })
   };
};
4

2 回答 2

0

observable如果您在以下情况下使用它,您应该打开包装:

   <input type="text" data-bind="value: note , disable: !$parent.isAllowedForMember()" />

下面这篇文章可以帮助你了解一些关于knockout的有用知识: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()" />
于 2012-12-03T12:04:43.467 回答
0

正如 Artem 所说,您需要解开可观察对象,但更好的是使用带有名称的计算对象来说明业务规则的含义

this.readonlyMember = ko.computed(function() {
   return this.isAllowedForMember();
}, this);

但是你的模型也有关系问题,因为你得到了

ReferenceError: isAllowedForMember 未定义

于 2012-12-03T13:02:26.660 回答