我有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);
我该如何解决这个问题?
答案 0 :(得分:0)
来自https://github.com/tildeio/router.js/#asynchronous-transitions
因为转换通常涉及异步的解析 数据,router.js中的所有转换都是异步执行的, 利用RSVP承诺库。例如,返回的值 从调用到transitionTo是一个带有then方法的Transition对象, 坚持Promise API。您希望在之后运行的任何代码 转换已完成必须放在.then
的成功处理程序中
所以你不能使用transitionTo的成功处理。 controller
实例仅在setupController挂钩中可用,因此answer取决于controllerAttr1
您将在何处以及如何获得此值。