我正在尝试向组添加权限,并且我进行了拖放设置,以便用户可以将未选择的权限拉到选定的权限,反之亦然。未选择的权限是通过从所有权限中删除选定的权限来计算的。这段代码一切正常。用户第一次打开页面时,只有那些未被选中的权限才会出现在未选中的一侧,选中的也是如此。
但是,当用户选择另一个组来查看时,选择的一侧是正确的,而未选择的一侧显示了最后一组显示的内容。这是路由和控制器:
App.GroupsEditRoute = Ember.Route.extend({
setupController: function(controller, model) {
this._super(controller, model);
controller.set('allPermissions', this.store.find('permission'));
},
actions: {
'update': function(group){
var route = this;
group.save().then(function(){
route.transitionTo('groups');
});
},
'cancel': function(group){
group.rollback();
this.transitionTo('groups');
},
'delete': function(group){
group.destroyRecord();
this.transitionTo('groups');
}
}
});
App.GroupsEditController = Ember.ObjectController.extend({
unselectedPermissions: function() {
console.log('UNSELECTED');
var allPermissions=this.get('allPermissions');
var permissions=this.get('permissions');
var self=this;
allPermissions.then( function() {
permissions.then( function() {
var unselected=allPermissions.filter(function(permission) {
return !permissions.contains(permission);
});
unselected=Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
sortProperties: ['name'],
content: unselected
});
self.set('unselectedPermissions',unselected);
});
});
}.property('model.unselectedPermissions'),
selectedPermissions: function() {
console.log('SELECTED');
return Ember.ArrayProxy.createWithMixins(Ember.SortableMixin, {
sortProperties: ['name'],
content: this.get('permissions')
});
}.property('model.selectedPermissions')
});
当我通过 {{#each}} 在我的视图中使用 unselectedPermissions 时,它只会触发一次。在那之后,我再也没有在我的日志中看到 UNSELECTED。但是,以相同方式使用的 SELECTED 每次都会触发。当然,页面上显示的数据也不会更新,除非我刷新。
每次显示页面时都会调用 setupController,因为它应该。
我不确定我做错了什么。
有任何想法吗?