未捕获的TypeError:无法读取属性'输入'未定义,同时使用transitionToRoute

时间:2015-08-31 07:14:16

标签: javascript ember.js

我得到一个"未捕获的TypeError:无法读取属性'输入'未定义"。这是我在控制器中使用transitionToRoute的时候。 控制器中的transitionToRoute函数,

     transitionToRoute: function() {
         // target may be either another controller or a router
         var target = get(this, 'target');
         var method = target.transitionToRoute || target.transitionTo;
         return method.apply(target, arguments);
     },

这里为目标变量分配视图而不是控制器或路由器。我不知道这是一个问题,还是我以错误的方式使用transitionToRoute。需要帮助。

编辑: 上面的功能可以在这里找到, https://github.com/emberjs/ember.js/tree/v2.0.1/packages/ember-routing/lib/ext/controller.js#L41

编辑: 在上面的函数中,它调用get函数和控制器对象作为"这个",寻找" target"关键在于它。 当我记录" this.target"在transitionToRoute中它打印一个路由类,但如果我在get函数中记录相同的变量,我会得到一个视图类。

我不知道这是怎么回事。

2 个答案:

答案 0 :(得分:0)

尝试

transitionToRoute: function() {
     // target may be either another controller or a router
     var target = get(this, 'target');
     var method = target.transitionToRoute || **this.target.transitionTo;**
     return method.apply(target, arguments);
 },

答案 1 :(得分:0)

这里,控制器的transitionToRoute功能正在获取其路由和呼叫路由的transitionTo功能。 因此,作为一种解决方法,我们可以直接在控制器中获取路由并调用transitionTo()

//inside controller
this.get('target').transitionTo(arguments);

但仍然很想知道为什么会这样。