【问题标题】:Trouble with transitionTo route after adding a new record using ember data and Parse使用 ember 数据和 Parse 添加新记录后,transitionTo 路由出现问题
【发布时间】:2013-05-07 01:11:22
【问题描述】:

我正在通过扩展 ember 指南页面中的示例博客应用程序来学习 ember 和 ember 数据,并且在实施用于添加新博客条目的“新”路线时遇到了一些困难。我正在使用 Parse 的 ember 数据适配器来保存数据。我已经成功连接到 Parse 并且可以查询和更新 Parse 中的记录。我创建了一个“新”路线,可以创建一个新帖子,但我有两个问题:

1) 我的新帖子路由在 Parse 上添加了帖子,但在保存后不会重定向回帖子路由。它给了我错误“未捕获的错误:断言失败:无法在未定义的对象上调用带有'id'的get。”。我尝试了 transitionTo('posts.post') 和其他选项的变体,但对于如何重定向回新帖子的帖子详细信息感到困惑。这是我的 PostsNewRoute:

App.PostsNewRoute = Ember.Route.extend({
    model: function() {
        return App.Post.createRecord();
    },
    events: {
        createPost: function() {
        this.get('store').commit();
        this.transitionTo('post');
        }
    }
});

2) 只要​​我输入新帖子的标题,它就会显示在帖子列表中,就像示例应用程序一样。但是,当我单击创建时,它会保留要解析的记录,然后也将解析记录添加到列表中。添加的第一个帖子的 ID 为空,第二个重复帖子的帖子 ID 来自 Parse。如果我单击第二个重复帖子,它会准确显示我想要的内容,即帖子详细信息视图中的新帖子。如何摆脱列表中的重复帖子,以及如何让重定向直接进入新帖子的详细信息?供参考,我的路由器在下面

App.Router.map(function() {
    this.resource('posts', function() {
        this.resource('post', { path: ':post_id'});
        this.route('new')
    });
    this.resource('about');
});

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    我想,在commit 从服务器返回后,您想转换到post 路由。我不确定commit 是否返回承诺(我不在最新版本的 ED 上)

    如果是,您可以使用 promise 的 then 函数在成功时进行转换。

    this.get('store').commit().then(function(post) {
      this.transitionTo('posts.post', post);
    });
    

    如果不是,您可以将操作绑定到发布记录的 id,这样即使它发生变化,即从服务器返回,您也可以调用转换。假设 post 是对象。

    post.addObserver('id', post, '_transitionFunction')
    

    然后:

    _transitionFunction: function() {
      var post = // some handle to the post object;
      post.removeObserver('id', this, '_transitionFunction');
      this.transitionTo('posts.post, post);
    }
    

    这些示例并不完全准确(我通常在控制器中执行此操作,而不是在路由中,但如果您需要更多说明,请告诉我。

    你们都可以看到implementation here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2021-09-02
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多