在淘汰赛中禁用文本框

时间:2012-12-03 11:50:14

标签: html knockout.js

我有一张如下表:

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

2 个答案:

答案 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未定义