emberjs如何在加载模型后触发jquery效果

时间:2014-03-13 05:44:27

标签: jquery ember.js

我开始使用Emberjs :) 我正在尝试使用fadein jquery效果显示模型中的图片

$('.ember-view img').load( ->
  $(this).fadeIn(10000).show()
).each( ->
  $(this).load() if(this.complete) 
)

我尝试了不同的方法来找到解雇此事件的好地方,但我无法找到创建方法来解雇此事件的好地方

我有这条路线

MyApp.SquaresRoute = Ember.Route.extend(
 setupController: (controller) ->
   controller.set('model', @store.find('sqimage'))

我还有2个控制器(数组和对象)

MyApp.SquaresController = Ember.ArrayController.extend

MyApp.SquareController = Ember.ObjectController.extend

以及我渲染对象的模板

 {{#each controller}}
    <img {{bind-attr src="url_thumbnail"}} {{bind-attr style="style"}} />
{{/each}}

我试图在视图文件中放入一个didInsertElement,但它没有用。

我应该使用观察者吗?我应该把它放在哪里?

万分感谢您的回答!

1 个答案:

答案 0 :(得分:0)

我会尝试为每个收藏项使用单独的视图。代码看起来像这样:

您的收藏品的把手模板:

{{#each item in controller}}
    {{view App.ItemView context=item}}
{{/each}}

ItemView的句柄模板:

<img {{bind-attr src="url_thumbnail"}} {{bind-attr style="style"}} />

在Views didInsertElement钩子中执行jquery效果:

App.YourView = Ember.View.extend({
  // these are two different styles to use the 'didInsertElement' hook. Choose the one you prefer
  didInsertElement : function(){
    this.$().find('img').fadeIn(10000);
  },
  yourEffectFunction : function(){
    this.$().find('img').fadeIn(10000);
  }.on("didInsertElement")
});

Plz注意:我真的不明白你的jquery代码应该做什么。所以只需用所需的代码替换View中的逻辑。