gpt4 book ai didi

ember.js - 使用 ember 数据和 Parse 添加新记录后 transitionTo 路由出现问题

转载 作者:行者123 更新时间:2023-12-02 05:00:47 26 4
gpt4 key购买 nike

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

1) 我的新帖子路由在 Parse 上添加了帖子,但在保存后不会重定向回帖子路由。它给我错误“ Uncaught Error :断言失败:无法在 undefined object 上调用带有'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,第二个重复的帖子有来自 Parse 的帖子 id。如果我单击第二个重复的帖子,它会准确显示我想要的内容,即帖子详细信息 View 中的新帖子。如何删除列表中的重复帖子,以及如何让重定向直接转到新帖子的详细信息?作为引用,我的路由器在下面

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

最佳答案

我想,您希望在 commit 从服务器返回后转换到 post 路由。我不确定 commit 是否返回一个 promise (我没有使用最新版本的 ED)

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

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

如果不是,您可以将一个 Action 绑定(bind)到帖子记录的 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);
}

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

你们都可以看到一个implementation here .

关于ember.js - 使用 ember 数据和 Parse 添加新记录后 transitionTo 路由出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com