Ember解析异步属于null

时间:2015-08-10 13:14:31

标签: ember.js ember-data ember-cli

在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}}

请注意,我正在将当前会话注入所有组件,路由和控制器。

1 个答案:

答案 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();
      });
    }
  }
});