Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js Emberjs didInsertElement在呈现DOM之前激发,仅适用于setTimeout 0_Ember.js_Ember.js View - Fatal编程技术网

Ember.js Emberjs didInsertElement在呈现DOM之前激发,仅适用于setTimeout 0

Ember.js Emberjs didInsertElement在呈现DOM之前激发,仅适用于setTimeout 0,ember.js,ember.js-view,Ember.js,Ember.js View,我有一个视图,它将其模板呈现到一个命名的outlet中。我使用didInsertElement钩子,并使用afterRender时间表等待DOM完成。但是,当我尝试访问此渲染过程的结果时,这些元素是未知的。如果我将访问包装在时间为0的setTimeout中(以便它在下一个事件循环周期中运行),那么它就可以工作 App.PlaceView = Ember.View.extend({ didInsertElement: function () { Ember.run.sche

我有一个视图,它将其模板呈现到一个命名的outlet中。我使用didInsertElement钩子,并使用afterRender时间表等待DOM完成。但是,当我尝试访问此渲染过程的结果时,这些元素是未知的。如果我将访问包装在时间为0的setTimeout中(以便它在下一个事件循环周期中运行),那么它就可以工作

App.PlaceView = Ember.View.extend({
    didInsertElement: function () {
        Ember.run.scheduleOnce('afterRender', this, function () {
            // This works
            setTimeout(
                function () {
                    // access elements
                },
                0
            );

            // Access elements here does not work
        });
    }
});

我做错了什么?

你有没有在didInsertElement或scheduleOnce中运行的代码?:D是的,我有实际的代码试图通过jQuery获取元素。在它工作的部分,我得到了元素,并且可以按预期使用它们。在不起作用的地方,jQuery根本不返回任何元素。我的意思是,您使用这些方法(diInsert&scheduleOnce)从其他子视图插入DOM,这些方法是您试图在此视图中访问的。好的,我不明白您的意思。我有一个PlaceRoute,它在一个outlet中呈现一个相应的模板,然后触发PlaceView.didInsertElement。这可能是因为您使用的是jquery抓取由另一个ember视图生成的内容吗?也许那些观点还没有准备好?我在这里猜。。你的问题需要更详细的说明