这个错误让我发疯。在问这里之前,我尝试了 freenode #emberjs。
我有以下路由方案:
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
路由器将 App.router.postController 的 content 属性设置为用户单击的帖子。在控制台中,
App.router.postController.get('content') instanceof DS.Model
返回true
。它试图调用addArrayObserver
this content
,但 DS.Model 没有扩展 Ember.Array (其中定义了 addArrayObserver )。
另一方面,
App.router.postsController.get('content') instanceof DS.RecordArray
返回true
,并调用addArrayObserver
它content
可以正常工作。
我错过了什么?