我目前正在开发Ember应用程序并且它很顺利,但由于我对MVC应用程序不熟悉,因此很多概念对我来说并不是很自然。
我目前正在尝试为我的索引路线返回两个模型。我提到另一个SO问题(EmberJS: How to load multiple models on the same route?)用于正确的方法并且它运作良好。
我现在的问题是,只有在用户通过身份验证时才需要设置两个模型中的一个。我正在使用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 ...'
})
});
}
});
出于某种原因,这不起作用。加载我的路线后,该模型只有“新入口”和#39;财产,而不是一个条目'属性,虽然承诺确实得到了实现(我把console.logs放在里面来证明它)。
可能会发生什么?这是实现这一目标的最佳方式吗?
答案 0 :(得分:1)
您总是希望为每个用户加载一组数据。在model
钩子中执行此操作,这实际上是路径的数据。
只有满足条件(身份验证)时才需要添加另一条信息。在afterModel
挂钩中执行此操作。
...提供路线已解决的模型......
http://emberjs.com/api/classes/Ember.Route.html#method_afterModel
因此,现在您可以在模型中追加或删除数据。或根据您收到的数据采取任何相关措施。