如何在EmberJS控制器中使用
使用已弃用的定义动作的原始代码:
actions
包装一个动作并从另一个动作中调用它?使用已弃用的定义动作的原始代码:
//app.js
App.IndexController = Ember.ArrayController.extend({
// properties
/* ... */
// actions
actionFoo: function() {
/* ... */
this.actionBar();
},
actionBar: function() {
/* ... */
}
});
//app.html
<div class="foo" {{action actionFoo this}}>
<div class="bar" {{action actionBar this}}>
然而,使用EmberJS 1.0.0时,我们会收到一个废弃警告,提示动作必须放在控制器内的actions对象中,而不是直接放在控制器中,如上所示。
根据建议更新代码:
//app.js
App.IndexController = Ember.ArrayController.extend({
// properties
/* ... */
// actions
actions: {
actionFoo: function() {
/* ... */
this.actionBar(); //this.actionBar is undefined
// this.actions.actionBar(); //this.actions is undefined
},
actionBar: function() {
/* ... */
}
}
});
//app.html
<div class="foo" {{action actionFoo this}}>
<div class="bar" {{action actionBar this}}>
然而,我发现在actions中定义的一个函数无法调用另一个函数,因为this
对象似乎不再是控制器。
我该如何解决这个问题?