什么都不处理立即事件的行动 - 恩伯

时间:2014-08-12 00:44:23

标签: javascript ember.js

好吧所以我遇到了这个问题,请查看

http://jsbin.com/rarubesuxutu/1/edit?html,css,js

我正在尝试在init之后发送一个事件,但事件没有得到处理。相反,行动只会出错。为什么Ember会这样处理?什么时候可以发送活动?有没有回调所以我可以设置观察员?

谢谢!

2 个答案:

答案 0 :(得分:3)

好的,我明白了。我误解了回调的顺序。

Here is my updated version。虽然它没有修复,但它有助于理解路由和控制器初始化的顺序。在路由IndexController之前调用setupController init。这会在路由设置之前触发事件。

答案 1 :(得分:0)

好的,所以我不确定你为什么要在init之后立即发送一个动作,因为你应该能够在setupController或控制器初始阶段定义所有变量,所以我将告诉你如何我会去做的。 JSBIN

有效的是你可以做的是控制器的init,你可以这样做:

theTruth: false,
setTheTruth: function(){
      this.set('theTruth', true);
}.on('init'),

然后你可以让观察者观察这个变量的变化,如下所示:

truthChanged:function(){
    console.log("TRUTH HAS CHANGED");
}.observes('this.theTruth'),

理想情况下,您可以通过利用路由setupController函数来放弃所有这些,如JSBIN

setupController: function(controller, model) {
    controller.set('model', model);
    controller.set('theTruth', true);
},

这样你甚至不会处理init事件中的任何事情。但是,假设您有一个要求使您必须对init事件执行任何操作,则应将观察者与.on('init')事件分开,并让它们分开共存。如果这对您有用,请告诉我。