【发布时间】:2012-06-25 14:52:24
【问题描述】:
这个错误让我抓狂。在问这里之前,我尝试了 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。它试图在这个content 上调用addArrayObserver,但DS.Model 没有扩展Ember.Array(其中定义了addArrayObserver)。
另一方面,
App.router.postsController.get('content') instanceof DS.RecordArray
返回true,并在此content 上调用addArrayObserver 工作正常。
我错过了什么?
【问题讨论】: