Ember.js 是否从控制器插入元素?

Ember.js 是否从控制器插入元素?,ember.js,ember-cli,Ember.js,Ember Cli,我有一个带有控制器header.js和模板header.hbs的ember应用程序 现在我需要在document$(document.ready() 我在Ember视图中看到有didInsertElement,但如何从控制器执行此操作 // controllers/header.js import Ember from 'ember'; export default Ember.Controller.extend({ }); // views/header.js import Ember fr

我有一个带有控制器
header.js
和模板
header.hbs
的ember应用程序

现在我需要在document
$(document.ready()

我在Ember视图中看到有
didInsertElement
,但如何从控制器执行此操作

// controllers/header.js
import Ember from 'ember';
export default Ember.Controller.extend({
});

// views/header.js
import Ember from 'ember';
export default Ember.Controller.extend({
});

// templates/header.js
test

我读了好几遍,使用余烬视图不是一种好的做法?

控制器未插入(视图已插入),因此没有didInsertElement

如果需要运行一次,可以编写如下内容:

import Ember from 'ember';
export default Ember.Controller.extend({
    someName: function () {  // <--- this is just some random name
        // do your stuff here
    }.on('init')  // <---- this is the important part
});
从“余烬”导入余烬;
导出默认的Ember.Controller.extend({
someName:function(){//一个更实际的答案(Ember 2.18+),同时遵循用户amenthes答案中提到的相同原则:不再建议使用Ember的函数原型扩展。相反,您可以直接重写控制器的
init()
方法。请注意,您必须调用
此方法(…参数)
为确保所有与余烬相关的代码运行:

import Controller from '@ember/controller';

export default Controller.extend({
  init() {
    this._super(...arguments); // Don't forget this!

    // Write your code here.
  }
});

啊,太好了!谢谢你能这么做。从我对ember的早期阅读来看,我觉得使用视图有一种耻辱感,或者这是没有根据的?好吧,它们存在是有原因的。控制器和视图做非常不同的事情。对于某些事情,你可以只使用一个模板(但在这种情况下,ember会动态生成一个默认视图).我想调用
Ember.$('.ui.modal').modal('show'))
在控制器内部,该控制器处理一条专用于模式的路线。我怎么做?我认为这将保证对Stackoverflow进行提问/回答。在评论中,你不会得到关于新问题的好答案。这个答案已经存在三年多了,从那时起,解决方案可能已经改变了。如果这样做,你可能会通过书面形式帮助更多的人把这当作一个完整的答案!要么我误解了(很可能;-)或者这是不正确的。我有一个模板,它在循环中使用组件。每次通过循环都会创建组件的一个实例。每次创建组件都会调用控制器上的一个操作。我假定此循环必须在
$(document).ready()之前发生
因为DOM正在调整,但我发现控制器的“init”处理程序中的处理在调用操作开始之前完成。如果我错了,我想知道我误解的地方。我使用的是Ember 3.x。