来自控制器的didInsertElement?

时间:2014-10-26 16:13:55

标签: ember.js ember-cli

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

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

执行一些javascript

我在Ember Views上看到有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

我多次阅读使用Ember Views不是一个好习惯吗?

2 个答案:

答案 0 :(得分:7)

未插入控制器(视图为)因此没有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
});

答案 1 :(得分:1)

一个更实际的答案(Ember 2.18 +),同时遵循用户amenthes回答中提到的相同原则:不再建议使用Ember的函数原型扩展。相反,您可以直接覆盖控制器的init()方法。请注意,您必须致电this._super(...arguments)以确保所有与Ember相关的代码都运行:

import Controller from '@ember/controller';

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

    // Write your code here.
  }
});