0
这个错误让我疯狂疯狂。在问这里之前,我尝试了freenode #emberjs。当用Ember路由到“显示”页面时出错
我有以下路由方案:
App.Router = Ember.Router.extend({
//...
showPost: Ember.State.transitionTo('post'),
posts: Ember.Route.extend({
route: '/posts',
connectOutlets: function(router, context) {
router.get('applicationController').connectOutlet({ outletName: 'page', name: 'posts', context: App.Post.find()});
this._super(router, context);
}
}),
post: Ember.Route.extend({
route: '/posts/:post_id',
connectOutlets: function(router, post) {
router.get('applicationController').connectOutlet({ outletName: 'page', name: 'post', context: post});
this._super(router, post);
}
})
});
的posts
路线显示帖子列表正常工作。导航到一个特定的岗位,例如posts\1
我在控制台中出现以下错误:
Uncaught TypeError: Object <App.Post:ember6957> has no method 'addArrayObserver'
如果需要的话,看看堆栈跟踪:http://pastebin.com/eEJ2hMAV
路由器设置应用程序的内容属性。 router.postController到用户点击的帖子。在控制台中,
App.router.postController.get('content') instanceof DS.Model
回报true
。它试图在content
上调用addArrayObserver
,但DS.Model未扩展Ember.Array(其中定义了addArrayObserver)。
在另一方面,
App.router.postsController.get('content') instanceof DS.RecordArray
回报true
,并在此content
调用addArrayObserver
工作正常。
我错过了什么?
好的,更新你的小提琴http://jsfiddle.net/ppanagi/jkkK3/6/它看起来像问题是,我扩展控制器的单个职位为'App.PostController = Ember.ArrayController.extend() ',它应该扩展ObjectController。愚蠢的错误,非常感谢! –
@Zack不客气:) –