gpt4 book ai didi

Ember.js 在 View 中获取 Controller

转载 作者:行者123 更新时间:2023-12-01 08:59:43 25 4
gpt4 key购买 nike

我觉得这应该很简单,但我无法在不同的 View 中获取 Controller 的内容。这是我的代码:

App.MapView = Ember.View.extend({
elementId: ['map-canvas'],
didInsertElement: function() {
var self = this;
var controller = this.get('controllers.markers');
}
});

如果我 console.log(controller) 我得到未定义。

在 Controller 中,我会执行以下操作:

App.MarkersController = Ember.ArrayController.extend({
needs: ['map']
});
App.MapController = Ember.ObjectController.extend({
plot: function() {
var markers = this.get('controllers.markers');
}
});

最佳答案

您将需求放在需要另一个 Controller 的 Controller 上,以及您将访问另一个 Controller 的位置。

从一个 View 来看,为了获取 Controller ,您需要执行 this.get('controller') 并且 controllers 对象存在于 Controller 上,所以 controller.controllers.markers

此外,如果 ember 创建 View ,则默认情况下仅使用 Controller 创建 View ,如果您正在执行类似 {{view App.MapView}} 之类的操作,则不会创建 MapController 并将其与它关联,它使用的是您创建 View 时范围内的 Controller 。

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');
}
});

查看它的实现:

http://emberjs.jsbin.com/ODuZibod/1/edit

关于Ember.js 在 View 中获取 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20012261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com