2014-10-29 72 views
1

改變觀察的價值,我認爲這是一個容易的事情...... 我有一個knockoutjs視圖模型是這樣的:從knockoutjs模型

UserModel = function(user) { 
    // ... 
    this.Permissions = new PermissionsModel(user.Permissions); 
    this.fullAccessValue = ko.observable(false); 


    // if the permissions change 
    $.each(self.Permissions, function(i, item) { 
     item.subscribe(function() { 
      if (self.allStoresSelected() && self.allPermissionsSelected()) { 
       userModel.fullAccessValue = ko.observable(true); 
       $('#savFullAccessCheck').prop('checked', true); 
      } else { 
       userModel.fullAccessValue = ko.observable(false); 
       $('#savFullAccessCheck').prop('checked', false); 
      } 
     }); 
    }); 

}; 

我必須做的:
我有一個複選框列表(權限)和另一個複選框(fullaccess)。 現在,當選中所有權限複選框時,必須檢查完全訪問權限。 如果未全部選中,則必須取消選中fullAccess。

否則,當我檢查fullAccess複選框時,必須檢查所有其他複選框。

的權限的複選框看起來像這樣:

var PermissionsModel = function(permissions) { 
    var self = this; 
    self.Access1 = ko.observable(permissions.Access1); 
    self.Access2 = ko.observable(permissions.Access1); 
    // ... 
}; 


userModel = new UserModel(); 
ko.applyBindings(userModel, $('#savBottomWrap')[0]); 

總而言之一句話:我的問題是如何使用JavaScript更新觀察到的值!?

這不是真正的工作:

userModel.fullAccessValue = ko.observable(false); 
$('#savFullAccessCheck').prop('checked', false); 

回答

1

如果實施此

userModel.fullAccessValue = ko.observable(false); 

比你可以像下面chenge值:

userModel.fullAccessValue(true); 

編輯: 你應該綁定此值複選框如

<input type="checkbox" checked="data-bind: userModel.fullAccessValue">