Ember transitionTo并在回调中设置controller属性

时间:2017-05-31 15:32:15

标签: javascript jquery ember.js

我有Ember代码转换到一些路线&我想在my.route上设置controllerAttr1

this.get('router').transitionTo("my.route").then(function (newRoute) {
    newRoute.controller.set("controllerAttr1", controllerAttr1); // This code is called later
});

在my.route中,我检查了controller.controllerAttr1

model: function (params) {

},

setupController: function setupController(controller, model) {
    // Issue us below check is executed before the callback code which sets "controllerAttr1"
    if (controller.controllerAttr1) {
        //Do something
    }
}

但是,我的问题是对controller.controllerAttr1的检查是在执行回调代码之前发生的

newRoute.controller.set("controllerAttr1", controllerAttr1);

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

来自https://github.com/tildeio/router.js/#asynchronous-transitions

  

因为转换通常涉及异步的解析   数据,router.js中的所有转换都是异步执行的,   利用RSVP承诺库。例如,返回的值   从调用到transitionTo是一个带有then方法的Transition对象,   坚持Promise API。您希望在之后运行的任何代码   转换已完成必须放在.then

的成功处理程序中

所以你不能使用transitionTo的成功处理。 controller实例仅在setupController挂钩中可用,因此answer取决于controllerAttr1您将在何处以及如何获得此值。