没有处理即时事件的动作-烬

Nothing handles action on immediate event - Ember

本文关键字:事件 处理      更新时间:2023-09-26

我遇到了这个问题,看看

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

我正试图在init之后发送一个事件,但事件没有得到处理。相反,这个动作会出错。为什么恩伯要这样处理?什么时候可以发送事件?有没有回调让我可以设置观察者?

谢谢!

好了,我算出来了。我误解了回调的顺序。

这是我的更新版本。虽然它不是固定的,但它有助于理解路由和控制器初始化的顺序。IndexController init在路由setupController之前被调用。在路由设置之前触发事件。

我不确定为什么你想在init之后发送一个动作,因为你应该能够在setupController或控制器init阶段定义所有变量,所以我将向你展示我将如何去做。JSBIN

实际上你能做的是在控制器的init中,你可以这样做:

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

然后你可以有一个观察者来监视这个变量的变化,像这样:

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

理想情况下,您可以通过利用路由setupController函数(如soJSBIN

)来放弃所有这些
setupController: function(controller, model) {
    controller.set('model', model);
    controller.set('theTruth', true);
},

这样你甚至不用处理init事件中的任何事情。然而,假设您有一个要求,使您必须对init事件做任何事情,您应该将您的观察者从。on('init')事件中分离出来,并让它们单独共存。让我知道这是否适合你。