Calling a controllers method in another controller Ember

筅森魡賤 提交于 2019-12-03 13:25:28

test is not technically a method, but an action or event. Use the send method instead:

this.get('controllers.account_info').send('test', arg1, arg2);
Ziyad Al Obaidi

As per Ember documentation; create a property that lazily looks up another controller in the container. This can only be used when defining another controller.

legacy ember application example:

App.PostController = Ember.Controller.extend({
  accountInfo: Ember.inject.controller()

  this.get('accountInfo').send('test')
});

modern ember application example:

// in an ember app created with ember-cli
// below snippet would be the app/controllers/post.js file
import Ember from 'ember';
export default Ember.Controller.extend({
  appController: Ember.inject.controller('application')
});

You can find more documentation about Ember.inject here

From the Updated Ember Documentation :

import { inject } from '@ember/controller';
export default Ember.Controller.extend({
  appController: inject('application')
});

For further reference, you can find out by this link https://guides.emberjs.com/release/applications/dependency-injection/#toc_ad-hoc-injections

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!