在我的路线中,我正在提取一些产品。
setupController: (controller, model) ->
controller.set('model', model)
controller.set('commissionLines', @store.find('commissionLine'))
controller.set 'products', @store.find('product')
产品显示在我的手柄模板中,我使用每个循环打印它们。在点击产品之前,我希望隐藏每个产品的描述。所以我添加了一个视图,它观察控制器中的产品,并相应地添加点击事件。
MyApp.PropperViewNameView = Ember.View.extend
applyClick: ( =>
@$('.button.expand').click (e) =>
@$(@).parent('tr').next().transition('slide down')
).observes('controller.products')
不幸的是,如果我添加"调试器"对于apply click方法,我可以看到它是在渲染html之前触发的。
如何正确附加我的绑定?
答案 0 :(得分:0)
所以我在编写它时实际上解决了这个问题,就像运行循环一样。 问题是在手柄绑定模板之前触发观察。所以我需要在之后运行我的点击事件,这是通过告诉ember在下一个运行循环中运行你的代码来完成的,你可以用“Ember.run.next”来完成。
所以我的视图代码现在看起来像这样。
applyClick: ( ->
Ember.run.next =>
@$('.button.expand').click (e) =>
@$(@).parent('tr').next().transition('slide down')
).observes('controller.products')
这里是js
applyClick: function() {
_this = this
Ember.run.next(function() {
_this.$('.button.expand').click(function(e) {
_this.$(_this).parent('tr').next().transition('slide down');
});
});
}.observes('controller.products'),
如果有更干净的方式,请随意投入。