您好,非常感谢您在这个问题上提供的宝贵帮助。
由于我在 EmberJS 的世界中很新,问题可能来自我而不是 Ember,但我找不到正确的方法来解决它。
我有一个名为 a 的模板、一个名为 AAView 的视图(也有它的模板)和两个控制器 AAController 和 BController。
模板 'a' 使用部分方法呈现:
{{部分'a'}}
AAController 是 AAView 的控制器,连接到位于“a”模板中的 AAOutlet
this.render('aa', {
outlet: 'AAOutlet',
into: 'application'
});
在这个 AAView 中,我有一个观察者应该观察AAController的 isShown 属性。
App.AAView = Ember.View.extend({
visibilityDidChanged: function() {
console.log('Visibility just changed man! Do something!');
}.observes('controller.isShown')
});
这isShown变量在 AAController 然后...
App.AAController = Ember.ObjectController.extend({
isShown: false
});
这个变量是在另一个控制器(BController)中设置的:
App.BController = Ember.ObjectController.extend({
needs: ['AA'],
myVal: '',
myValDidChanged:function() {
//Conditions and a lot of interesting stuffs
this.get('controllers.AA').set('isShown', true);
}.observes('myVal')
});
当我的脚本执行并到达此代码时,视图不会收到有关控制器更改的通知...
如果我停止调试器this.get('controllers.AA').set('isShown', true); 行,似乎this.get('controllers.AA')返回另一个(或新的?)控制器,而不是视图使用和观察的控制器。
因此问题出在哪里,如何在 BController 中检索正确的控制器来编辑值并触发视图中的观察者?
非常感谢您对此的帮助!