如何在Ember Controller afterRender中运行操作

Moh*_*mar 12 ember.js ember-data ember-cli

我是ember框架的新手.我只想在渲染完成后执行在actions钩子内定义的函数.

var Controller = Ember.Controller.extend({
  actions: {
    foo: function() {
        console.log("foo");
    }
  }
});
Ember.run.schedule("afterRender",this,function() {
  this.send("foo");
}
Run Code Online (Sandbox Code Playgroud)

但上面的代码不起作用.我只是想知道,是否可以运行foo()afterRender?

art*_*ych 35

你可以使用init:

App.Controller = Ember.Controller.extend({
  init: function () {
    this._super();
    Ember.run.schedule("afterRender",this,function() {
      this.send("foo");
    });
  },

  actions: {
    foo: function() {
      console.log("foo");
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 解决方案可能导致测试错误"断言失败:您已打开测试模式,这会禁用运行循环的自动运行.您将需要在运行中包装任何带有异步副作用的代码".怎么走走这个? (4认同)