从控制器操作"提交"我收到了这个错误:
RangeError: Maximum call stack size exceeded
at String.indexOf (native)
at get (http://builds.emberjs.com/canary/ember.prod.js:16123:41)
at ControllerMixin.reopen.transitionToRoute (http://builds.emberjs.com/canary/ember.prod.js:19948:22)
at ControllerMixin.reopen.transitionToRoute (http://builds.emberjs.com/canary/ember.prod.js:19950:23)
这是有问题的代码:
actions: {
submit: function() {
var self = this;
this.get('model').save().then(function() {
self.transitionToRoute('animals');
});
}
}
现在,#/ animals在URL中输入时起作用。我尝试了各种变化:
self.transitionToRoute('animals.index');
and
self.transitionToRoute('/animals');
它们都不起作用。有什么问题?
答案 0 :(得分:0)
嗯,事实证明。将路由中的controllerName设置为默认控制器以外的其他控制器会使我的控制器没有应用路由器的目标。 transitionToRouter的代码调用控制器目标,它希望是应用程序路由器。在我的情况下,控制器目标指向自己。接下来我尝试了一个mixin并得到错误: 未捕获的TypeError:无法读取null的“forEach”属性
看起来它与此有关:
http://discuss.emberjs.com/t/dynamically-extending-object-instances-with-mixin/5411/5
基本上我不能使用我的mixin,因为它具有包含元数据的属性。所以我想我被困在复制和粘贴中。