在ember-cli(组件名称if-current-user
)中使用以下组件,对model.user上的belongsTo的承诺解析为null,直到我将不相关的模型保存到商店中。如何将其解析为与记录关联的User对象?
export default Ember.Component.extend({
userId: Ember.computed.alias('user.id'),
currentUserId: Ember.computed.alias('session.user.id'),
isCurrentUser: function() {
return !!(this.get('userId') && this.get('currentUserId') && this.get('userId') === this.get('currentUserId'));
}.property('userId', 'currentUserId')
});
型号:
import DS from 'ember-data';
export default DS.Model.extend({
user: DS.belongsTo('user', { async: true }),
timestamp: DS.attr('number')
});
模板:
{{#if-current-user user=model.user}}
{{#link-to "route.edit" model}}Edit{{/link-to}}
{{/if-current-user}}
请注意,我正在将当前会话注入所有组件,路由和控制器。
答案 0 :(得分:0)
原来这与后端的数据存储有关。如果您不满足hasMany / belongsTo的要求,并且不将相关实例插入到两个对象中,则此条件将代表自身。
简而言之,我只将当前用户存储在belongsTo中,而反向hasMany - 在加载用户时 - 无法找到关系,似乎将其从Ember数据存储中删除。烦人,但至少它是一致的。
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
save: function() {
var user = this.get('session.user');
var newInstance = this.store.createRecord('model', {
user: user,
timestamp: new Date().getTime()
});
newInstance.save().then(function() {
user.get('models').pushObject(newInstance);
user.save();
});
}
}
});