gpt4 book ai didi

javascript - 难以访问 Ember 中 "didInsertElement"代码中的实际对象

转载 作者:行者123 更新时间:2023-11-28 08:11:22 26 4
gpt4 key购买 nike

在 Ember 中,我在访问元素时反复遇到问题,特别是通过引用另一个元素获得的元素。我在 View 中的“didInsertElement” Hook 中运行了 javascript,这就是网络上大多数地方似乎表明运行该逻辑的正确位置。

但是,我尝试访问的 ember 对象不是真实的 - Ember(大概是 EmberData)正在返回一个空白占位符对象,该对象不具有任何所需的值。每个属性都是未定义的。

我尝试等待 promise 解决...但这不是 promise ,它只是一个具有未定义属性的假对象。我尝试使用 Ember.run.next 来确保首先完成加载。这两种解决方案或我尝试过的任何其他解决方案都不起作用。

这是我的意思的一个例子:模板:

{{#each entry in list.entries}}
{{display-note note=entry}}
{{/each}}

组件:

didInsertElement: function(){
alert(this.get("note").get("title"));
}

这不一致地返回“未定义”,在我传递对象列表的情况下甚至更加不一致(例如 {{display-notesnotes=list.entries}} )。

在模板中执行诸如 {{list.entry.title}} 之类的操作效果很好 - 数据正在加载,只是它被“假对象”替换,直到发生这种情况,而且我不知道如何告诉 ember 应用程序等到它真正运行我的代码并尝试访问它。

对于 self 引用尤其如此。有时,很少,上面的代码似乎有效 - 但如果我有一个注释树,其中 hasMany 注释为 children,尝试访问 children 即使在模板中也会失败。不过,这可能是由于另一个问题或两个问题的组合造成的。

最佳答案

我猜 note 在这里未定义:

didInsertElement: function(){
alert(note.get("title"));
}

使用didInsertElement,从当前 View (即this)开始并从那里获取数据。假设您位于 NoteView 中,它看起来像这样:

App.NoteView = Ember.View.extend({
title : 'hello world'

didInsertElement: function (){
alert(this.get('title'));
}
})

关于javascript - 难以访问 Ember 中 "didInsertElement"代码中的实际对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com