Javascript Ember仅在初始呈现时调用jQuery代码

Javascript Ember仅在初始呈现时调用jQuery代码,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,在我的Ember组件类中,我想运行一些jQuery代码来隐藏一些元素。但是,我希望此代码仅在初始渲染时运行,而不在其他事件(例如网格刷新)上运行 我尝试添加到“didRender”,但运行了多次 还尝试从“didInsertElement”钩子调用上述函数,但jQuery在该阶段找不到元素。如果在didInsertElement()上找不到元素,则可以尝试在短时间延迟后运行jQuery代码,例如 从“@glimmer/Component”导入组件 从'@ember/runloop'导入{late

在我的Ember组件类中,我想运行一些jQuery代码来隐藏一些元素。但是,我希望此代码仅在初始渲染时运行,而不在其他事件(例如网格刷新)上运行

我尝试添加到“didRender”,但运行了多次


还尝试从“didInsertElement”钩子调用上述函数,但jQuery在该阶段找不到元素。

如果在
didInsertElement()
上找不到元素,则可以尝试在短时间延迟后运行jQuery代码,例如

从“@glimmer/Component”导入组件
从'@ember/runloop'导入{later};
导出默认类MyComponent扩展组件{
didInsertElement(){
稍后(函数(){
$(“.my grid footer value”).hide();
});
}
}
here类似于
setTimeout()
,但它在中运行。由于没有指定延迟,所以应该尽快运行(希望在执行时网格页脚元素会存在)

作为一般规则,无论何时进行任何DOM操作,都应该(通常)将其包装在runloop方法中,以便Ember可以安排代码在正确的时间运行


但是,作为一种Ember最佳实践,您应该尝试避免自己修改DOM,而是让Ember处理它(使用类似于
{{{{{{if this.showPositionElements}}}…{{/if}}
,然后切换
showPositionElements
)。

如果在
diInsertElement()
上找不到元素,例如,您可以尝试在短时间延迟后运行jQuery代码

从“@glimmer/Component”导入组件
从'@ember/runloop'导入{later};
导出默认类MyComponent扩展组件{
didInsertElement(){
稍后(函数(){
$(“.my grid footer value”).hide();
});
}
}
here类似于
setTimeout()
,但它在中运行。由于没有指定延迟,所以应该尽快运行(希望在执行时网格页脚元素会存在)

作为一般规则,无论何时进行任何DOM操作,都应该(通常)将其包装在runloop方法中,以便Ember可以安排代码在正确的时间运行


但是,作为一种Ember最佳实践,您应该尝试避免自己修改DOM,而是让Ember来处理它(使用类似于
{{{{if this.showPositionElements}}…{{/if}
,然后切换
showPositionElements
)。

diInsertElement
应该可以工作。如果不是的话,还有其他的问题。或者在更新的余烬版本中使用
did insert
修饰符。重新调试
did insertelement
应该可以。如果不是的话,还有其他的问题。或者在更新的余烬版本中使用
did insert
修饰符。重新调试会很好
hidePositionElements: function() {
    var self = this;
    var currPosLabelElements = $( ".my-grid-footer-value");
    currPosLabelElements.hide();
},