Javascript 如何在Ember视图中引用父范围
我是Ember的新手,这里有一个简单的代码,可以让箭头按钮增减Javascript 如何在Ember视图中引用父范围,javascript,jquery,ember.js,scope,Javascript,Jquery,Ember.js,Scope,我是Ember的新手,这里有一个简单的代码,可以让箭头按钮增减amountproperty的值: export default Ember.View.extend({ afterRenderEvent: function() { $('.spinner .increase').on('click', function() { this.incrementProperty('amount'); }); $('.spin
amount
property的值:
export default Ember.View.extend({
afterRenderEvent: function() {
$('.spinner .increase').on('click', function() {
this.incrementProperty('amount');
});
$('.spinner .decrese').on('click', function() {
this.decrementProperty('amount');
});
},
template: ProductView
});
问题是这个不是指Ember.View对象,而是指函数的范围,如何解决这个问题
另外,我认为使用jQuery操作元素不是余烬的方式。我应该为每个箭头按钮创建视图吗?维护对原始上下文的引用,然后在闭包中使用它,应该可以解决您的问题:
export default Ember.View.extend({
afterRenderEvent: function() {
var self = this;
$('.spinner .increase').on('click', function() {
self.incrementProperty('amount');
});
$('.spinner .decrese').on('click', function() {
self.decrementProperty('amount');
});
},
template: ProductView
});
谢谢你的快速回复。你的解决方案有效!你认为这样做对吗?或者为视图本身设置一个on事件?我不熟悉ember,抱歉:/如果它是纯jquery,我肯定会这样做,维护对原始上下文的引用也是常见的做法。正确的答案,在ember中这样做的方式不正确(并且无法清理事件处理程序,这不是您的错,但ember方式会),如果你将其更新为使用actions,我会很高兴地取消我的否决票。如果你有更好的答案,请自己发布,我将向上投票。我的并不像你说的那样不正确,所以没必要投否决票。。。