使用hasMany(..)。value()而不是get(..)时cp不更新

时间:2016-05-25 11:42:44

标签: javascript ember.js ember-data

我创建了一个jsbin:https://ember-twiddle.com/52edd8462fa6e3cf1a147a2a047c9207?openFiles=models.post.js%2C

问题:characters上的{/ em> cp postcontent更改属性comment时无法更新。

'修复':使用this.get('comments')代替this.hasMany('comments').value()时确实发生了更改。

get通知观察者它应该查找属性上的更改,因为它正在使用,而hasMany似乎没有此功能..

这是故意还是错误?

3 个答案:

答案 0 :(得分:0)

你没有迭代model.comments.这就是你面临问题的原因。 尝试在模板中使用以下代码。它的工作

{{#each model.comments as |comment|}}
    <div>
    content: {{input value=comment.content}}
  </div>

  <div>
    characters: {{comment.characters}}
    </div>

  <br /><br />
{{/each}}

答案 1 :(得分:0)

如果还没有值(尚未从后端检索),则调用hasMany().value()将返回模型的当前值和null。它可用于检查模型是否已加载,它不会触发对服务器的加载。这是预期的行为,只是在不触发负载的情况下获取内容。

答案 2 :(得分:0)

我通过修改私有API修复了这个问题。

可通过以下ember-addonhttps://github.com/dylanmensaert/ember-data-peek-relationship

获得解决方案