我目前正在开发一个 Ember 应用程序,它进展顺利,但由于我通常是 MVC 应用程序的新手,所以有很多概念对我来说并不自然。
我目前正在尝试为我的索引路由返回两个模型。我参考了另一个SO问题(EmberJS:如何在同一路线上加载多个模型?)以获得正确的方法,它效果很好。
我的问题是,现在我只需要在用户经过身份验证时才设置两个模型中的一个。我正在使用 ember-simple-auth,目前这就是我得到的:
// app/routes/index.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
if (this.get('session.isAuthenticated')) {
var _this = this;
this.get('store').find('user', this.get('session.uid')).then(function(user) {
_this.set('model.entries', user.get('entries'));
});
}
return Ember.RSVP.hash({
newEntry: this.get('store').createRecord('entry', {
body: 'Write here ...'
})
});
}
});
出于某种原因,这不起作用。加载路由后,模型只有"newEntry"属性,而不是"entryries"属性,尽管承诺确实得到了实现(我把console.logs放在里面来证明这一点)。
可能会发生什么?这是实现这一目标的最佳方法吗?
您始终希望为每个用户加载一组数据。在model
钩中执行此操作,这实际上是路由的数据。
只有当满足条件(身份验证)时,才要添加另一条信息。在afterModel
钩中执行此操作。
。提供了路由的解析模型...
http://emberjs.com/api/classes/Ember.Route.html#method_afterModel
因此,现在您可以在模型中追加或删除数据。或者根据您收到的数据采取任何相关措施。