正如文档中所读到的,控制器永远不应该在其关联的视图上调用方法或更改属性,而是视图应该绑定其关联控制器的状态。
有这个:
App.MyController = Ember.Controller.extend({
myViewVisible:false,
toggleViewVisibitity:function(){
this.set('myViewVisible', !this.get('myViewVisible'));
}
}
App.MyView = Ember.View.extend({
isVisible:function(){
return this.get('myViewVisible');
}.observes('myViewVisible')
}
当我从另一个控制器调用toggleViewVisibility时,视图中没有任何反应。
我怎样才能做对?
提前致谢
答案 0 :(得分:8)
它应该以这种方式工作:
App.MyController = Ember.Controller.extend({
myViewVisible:false,
toggleViewVisibitity:function(){
this.set('myViewVisible', !this.get('myViewVisible'));
}
}
App.MyView = Ember.View.extend({
isVisible:function(){
return this.get('controller.myViewVisible');
}.property('controller.myViewVisible'),
// even shorter version of the above
isVisible : Ember.computed.alias("controller.myViewVisible")
}
您的代码需要更改: