我正在尝试访问一个控制器的示例,该示例已经使用App.initialize()自动连接;我已经尝试了下面的方法,但是它返回的是一个类,而不是一个示例。Ember.get('App.router.invitesController')
Ember.get('App.router.invitesController')
lo8azlld1#
我在我的博客上有一个关于这个主题的快速帖子。这是一个有点大的不同的方法,但似乎工作得很好Ember.js RC1。请访问:http://emersonlackey.com/article/emberjs-instance-of-controller-and-views基本的想法是这样做:
var myController = window.App.__container__.lookup('controller:Posts');
fumotvh32#
此答案适用于RC 1/RC 2。现在你可以使用needs声明来使所需的控制器可访问。假设我想从我的ApplicationController中得到一些东西,我可以做如下操作:
needs
ApplicationController
App.SettingsController = Ember.Controller.extend({ isPublic: true }); App.ApplicationController = Ember.Controller.extend({ needs: 'settings', isPublicBinding: 'controllers.settings.isPublic' });
现在,在我的ApplicationController上下文中,我可以只执行this.get('isPublic')
this.get('isPublic')
ars1skjm3#
您可以通过router.get('invitesController')访问路由器中操作内的控制器示例,请参见http://jsfiddle.net/pangratz666/Pk4k2/:
router.get('invitesController')
App.InvitesController = Ember.ArrayController.extend(); App.Router = Ember.Router.extend({ root: Ember.Route.extend({ route: '/', index: Ember.Route.extend({ route: '/', connectOutlets: function(router, context) { var invitesController = router.get('invitesController'); }, anAction: function(router) { var invitesController = router.get('invitesController'); } }) }) });
baubqpgj4#
您可以使用lookup method of Application instance按名称访问任何控制器示例。要获取应用程序示例,您可以从任何路由或控制器使用getOwner。
const controllerName = 'invites'; Ember.getOwner(this).lookup(`controller:${controllerName}`));
4条答案
按热度按时间lo8azlld1#
我在我的博客上有一个关于这个主题的快速帖子。这是一个有点大的不同的方法,但似乎工作得很好Ember.js RC1。
请访问:http://emersonlackey.com/article/emberjs-instance-of-controller-and-views
基本的想法是这样做:
fumotvh32#
此答案适用于RC 1/RC 2。
现在你可以使用
needs
声明来使所需的控制器可访问。假设我想从我的
ApplicationController
中得到一些东西,我可以做如下操作:现在,在我的
ApplicationController
上下文中,我可以只执行this.get('isPublic')
ars1skjm3#
您可以通过
router.get('invitesController')
访问路由器中操作内的控制器示例,请参见http://jsfiddle.net/pangratz666/Pk4k2/:baubqpgj4#
您可以使用lookup method of Application instance按名称访问任何控制器示例。要获取应用程序示例,您可以从任何路由或控制器使用getOwner。