gpt4 book ai didi

javascript - EmberJS Action - 当包装在 `actions` 中时从另一个 Action 调用一个 Action

转载 作者:IT王子 更新时间:2023-10-29 03:03:16 26 4
gpt4 key购买 nike

当包裹在 EmberJS Controller 的 actions 中时,如何从另一个 Action 调用一个 Action ?

使用现已弃用的方式定义操作的原始代码:

//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,我们会收到弃用警告,指出 Action 必须放在 Controller 内的 Action 对象中,而不是像上面那样直接放在 Controller 中。

根据建议更新代码:

//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}}>

但是,我发现 Action 中定义的一个函数不可能调用另一个函数,因为 this 对象似乎不再是 Controller 。

我该怎么做呢?

最佳答案

您可以使用 send(actionName, arguments) 方法。

App.IndexController = Ember.ArrayController.extend({
actions: {
actionFoo: function() {
alert('foo');
this.send('actionBar');
},
actionBar: function() {
alert('bar');
}
}
});

这是一个包含此示例的 jsfiddle http://jsfiddle.net/marciojunior/pxz4y/

关于javascript - EmberJS Action - 当包装在 `actions` 中时从另一个 Action 调用一个 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18743760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com