我正在使用each
帮助器在Ember.js视图中创建一个无序列表。我还有一些在didInsertElement
钩子上运行的Javascript,它选择每个列表项。但是,如果我使用each
帮助程序生成列表,则该选择器无法选择任何元素。关于如何从选择器获得结果的任何想法?
相关观点:
<script type="text/x-handlebars" data-template-name="slider">
<ul>
{{#each slide in controller}}
<li><img src="./resource/locations/1/test.jpg"></li>
{{/each}}
</ul>
<br>
</script>
相关的JS:
App.SliderView = Ember.View.extend({
templateName: "slider",
didInsertElement: function() {
var self = this;
var items = $(">ul>li", self.$());
//...
}
});
更新
我认为问题出现是因为我正在加载异步填充控制器的模型。有没有办法监听首次填充模型时发生的事件?
我的型号代码:
App.Location = DS.Model.extend({
thenSlider: DS.hasMany("slide", {async: true})
});
App.Slide = DS.Model.extend({
//...
});
答案 0 :(得分:1)
对我来说很好,您可能会遇到didInsertElement
触发后数据填充的问题。 didInsertElement
仅在最初插入Slider
时触发,不一定在插入/修改其中的元素时触发。
http://emberjs.jsbin.com/liluxece/1/edit
由于它是异步的,我会使用render
并将其连接到另一个视图,这样您就可以针对每个项目的具体情况使用didInsertElement
。
{{render 'template' context}}
这是一个例子