0

这个错误让我发疯。在问这里之前,我尝试了 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。它试图调用addArrayObserverthis content,但 DS.Model 没有扩展 Ember.Array (其中定义了 addArrayObserver )。

另一方面,

App.router.postsController.get('content') instanceof DS.RecordArray

返回true,并调用addArrayObservercontent可以正常工作。

我错过了什么?

4

1 回答 1

2

由于我错过了您代码中的一些上下文,因此我根据您的代码构建了一个工作示例。

查看代码,http://jsfiddle.net/Sly7/jLbry/

查看路线:http: //jsfiddle.net/Sly7/jLbry/show

希望这可以帮助。

于 2012-06-25T18:49:54.553 回答