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
Events Ember.js和同位素.js-在呈现所有子视图后执行Javascript_Events_Ember.js_Views_Rendering - Fatal编程技术网

Events Ember.js和同位素.js-在呈现所有子视图后执行Javascript

Events Ember.js和同位素.js-在呈现所有子视图后执行Javascript,events,ember.js,views,rendering,Events,Ember.js,Views,Rendering,我使用Ember.js(1.0.RC),并希望将同位素.js的功能应用于位于“容器”中的一些视图 因此,我的路由基本上是从服务器加载包含所需数据的模型,设置控制器的内容并将其绑定到模型的数据,这很好 接下来,我为我的IndexRoute声明了一个模板,它迭代所有加载的项,如下所示: {{each item in this itemViewClass="App.ItemView"}} 这些项目是应使用同位素.js过滤的图像。ItemView目前只引用一个简单的模板 执行链如下:路由->获取模型数

我使用Ember.js(1.0.RC),并希望将同位素.js的功能应用于位于“容器”中的一些视图

因此,我的路由基本上是从服务器加载包含所需数据的模型,设置控制器的内容并将其绑定到模型的数据,这很好

接下来,我为我的IndexRoute声明了一个模板,它迭代所有加载的项,如下所示:

{{each item in this itemViewClass="App.ItemView"}}
这些项目是应使用同位素.js过滤的图像。ItemView目前只引用一个简单的模板

执行链如下:路由->获取模型数据->设置控制器->创建索引视图->将所有项目视图堆积在一个DIV容器中

现在我需要检查是否加载了所有的ItemView,渲染是否最终完成,以应用同位素.js的过滤功能,但我不知道如何做到这一点

IndexView事件的
didInsertElement
在渲染后以及ItemView添加到DOM之前立即激发

我已经尝试设置了一个
ContainerView
,如果我没有通过模型获取数据,而是将其硬编码到
content
变量中,它将与
Ember.run.scheduleOnce(“afterRender”…)
一起工作

CollectionView
也不利于我进行此练习


有没有办法解决这个问题?我真的很感激。谢谢。

我不知道同位素.js到底是如何工作的。考虑到它只是一个jquery插件,你可以这样调用同位素,即使它是
ContainerView
CollectionView

didInsertElement: function() {
   Ember.run.next(this, function(){
     this.$().isotope({}) // or watever code u want to write
   });
}

这可以确保渲染完成后,ember.run中的代码会运行。

JSFIDLE复制您的问题将非常有用。这正是我想要的。谢谢!看起来这只是一个解决办法..有一个对话通过弃用
run.next()
…来支持
afterRender
…但我希望他们解决像ContainerView渲染这样的问题以及所有。。。不幸的是,
afterRender
没有获得与
run.next()相同的结果。不知道为什么。是的,我知道…甚至我也遇到过同样的问题…我想他们知道并且很快就会纠正。。