【发布时间】:2014-06-11 21:03:27
【问题描述】:
我在访问 Ember 中的元素时遇到了重复的问题,特别是通过从另一个元素引用获得的元素。我在视图中的“didInsertElement”挂钩中运行了 javascript,这是网络上大多数地方似乎表明运行该逻辑的正确位置。
但是,我尝试访问的 ember 对象不是真实的 - Ember(可能是 EmberData)正在返回一个没有任何必需值的空白占位符对象。每个属性都是未定义的。
我试过等待承诺解决......但这不是承诺,它只是一个具有未定义属性的假对象。我尝试过使用 Ember.run.next,以确保首先完成加载。这两种解决方案,或者我尝试过的任何其他解决方案,都没有奏效。
这是我的意思的一个例子: 模板:
{{#each entry in list.entries}}
{{display-note note=entry}}
{{/each}}
组件:
didInsertElement: function(){
alert(this.get("note").get("title"));
}
这不一致地返回“未定义”,在我传递对象列表的情况下更不一致(例如 {{display-notes notes=list.entries}} )。
在模板中执行{{list.entry.title}} 之类的操作可以正常工作 - 数据正在加载,只是它被“假对象”替换,直到发生这种情况,我不知道如何告诉 ember 应用程序等到真正运行我的代码并尝试访问它。
对于 self 引用尤其如此。有时,很少,上面的代码似乎工作 - 但如果我有一棵树,比如说,cmets,hasMany cmets 作为children,即使在模板中尝试访问children 也会失败。不过,这可能是由于另一个问题,或者是这两个问题的组合。
【问题讨论】:
-
不应该是 {{#each entry in list}} 吗?
-
我将其复数以使其更清晰。这实际上是一个不在列表中的关系。将其更改为“list.entries”。如果这仍然是错误的,当然,让我知道,因为那会是有问题的。
标签: javascript ember.js ember-data