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()" />

次の記事は、ノックアウトについて役立つことを学ぶのに役立ちます

編集:

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 に答える