【问题标题】:Error when routing to the "show" page with Ember.Route使用 Ember.Route 路由到“显示”页面时出错
【发布时间】: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 工作正常。

我错过了什么?

【问题讨论】:

    标签: ember.js ember-old-router


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 好的,更新了你的小提琴jsfiddle.net/ppanagi/jkkK3/6 看起来问题是我将控制器扩展为App.PostController = Ember.ArrayController.extend(),它应该扩展ObjectController。愚蠢的错误,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    相关资源
    最近更新 更多