4

我正在遍历 Ember.js Handlebars 模板中的一组对象,并尝试使用holder.js为每个对象显示一个占位符图像。

在#each 循环上下文之外,holder.js 按预期呈现占位符图像:

<img data-src="holder.js/100x100" src='' alt='person image' />

{{#each person in controller}}
  person.name
{{/each}}

在#each 循环内时,不会出现占位符图像

{{#each person in controller}}
  <img data-src="holder.js/100x100" src='' alt='person image' />
  person.name
{{/each}}

也许我不了解#each 循环的工作原理,但是有什么技巧可以让占位符图像出现在这里?

4

2 回答 2

3

问题是在循环遍历所有数据Holder.run()之前Ember调用的,因此您必须稍后自己再次调用它。

你可以尝试添加

Em.run.schedule('afterRender', null, function () { Holder.run(); })

或者

Em.run.next(function () { Holder.run(); })

renderTemplate你路线的钩子上。(更好的是在您知道控制器已加载所有数据之后添加它。)

于 2013-05-28T13:18:06.137 回答
3

我只是想更明确一点,以防像我这样的人遇到类似的问题或对它的工作原理感到困惑。

首先,如果您没有模板,请为您的模板添加一个视图。如果您正在使用 MushroomsRoute,请创建一个 MushroomsView。在您的视图中,执行以下操作:

App.MushroomsView = Ember.View.extend({
    didInsertElement: function() {
        Ember.run.next(function() {
            Holder.run();
        })
     }
});

这应该可行——或者至少在 Ember 1.0.0 上可行。

于 2013-09-24T03:34:13.847 回答