actions
当包裹在EmberJS 控制器中时,如何从另一个动作中调用一个动作?
使用现已弃用的方式定义操作的原始代码:
//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 中,我们收到了弃用警告,说动作必须放在控制器内的动作对象中,而不是像上面那样直接放在控制器中。
根据建议更新代码:
//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}}>
但是,我发现在动作中定义的一个函数不可能调用另一个函数,因为该this
对象似乎不再是控制器。
我该怎么做呢?