我觉得这应该是非常简单的,但我无法在不同的视图中获取控制器的内容。这是我的代码:
App.MapView = Ember.View.extend({
elementId: ['map-canvas'],
didInsertElement: function() {
var self = this;
var controller = this.get('controllers.markers');
}
});
如果我是console.log(控制器),我会得到未定义的。
在控制器中我会做类似的事情:
App.MarkersController = Ember.ArrayController.extend({
needs: ['map']
});
App.MapController = Ember.ObjectController.extend({
plot: function() {
var markers = this.get('controllers.markers');
}
});
答案 0 :(得分:9)
您将需求放在需要另一个控制器的控制器上,以及您将访问另一个控制器的位置。
从视图中,为了抓取控制器,您执行this.get('controller')
并且controllers
对象存在于控制器上,因此controller.controllers.markers
此外,默认情况下,如果ember创建了视图,则默认情况下会使用控件创建视图;如果您正在执行类似{{view App.MapView}}
的操作,而不是创建MapController
并将其与之关联,则使用创建视图时在范围内的控制器。
App.MapView = Ember.View.extend({
elementId: ['map-canvas'],
didInsertElement: function() {
var self = this;
var controller = this.get('controller.controllers.markers');
}
});
App.MarkersController = Ember.ArrayController.extend({
});
App.MapController = Ember.ObjectController.extend({
needs: ['markers'],
plot: function() {
var markers = this.get('controllers.markers');
}
});
查看它的实现: