我有一个模式对话框,其实现方式与说明书中描述的类似:http://emberjs.com/guides/cookbook/user_interface_and_interaction/using_modal_dialogs/
我可以通过模板中的事件关闭模式,没有任何问题。但是,我已经为特定模式实现了一个 Controller ,它使用通过模式输入的数据创建一个新模型。现在我想在创建模型( Controller 完成后)后关闭对话框。我尝试了各种方法将操作从 Controller 发送到模式,但到目前为止没有任何效果。那么,有两个问题:
Controller 中的操作完成后如何关闭模式?
export default ModalController.extend({ actions: { create: function() { // do some stuff var newModel = this.store.createRecord('newModel', { name: name }); newModel.save() // close modal // ... but how? }
由于这依赖于 promise ,我认为这会在创建 promise 后关闭模式。当服务器的实际响应到达且一切正常时,如何关闭模式?
最佳答案
假设您的模型使用 Ember 数据:
export default ModalController.extend({
actions: {
create: function() {
// do some stuff
var newModel = this.store.createRecord('newModel', {
name: name
});
newModel.save().then(function success() {
//success message and close modal
}).catch(function failure() {
//error message and close modal
});
}
这里的基本思想是为Model.save()
注册成功
和失败
回调,
并在这些回调中关闭模式对话框。
至于如何实际关闭模式对话框,假设您已经实现了
closeModal
在同一个 Controller
的操作哈希中,
您需要通过 this.send()
newModel.save().then(function success() {
//success message and close modal
this.send('closeModal');
}.bind(this)) /* ... */
请务必在回调函数上调用 .bind()
,以便 this
引用您期望的内容( Controller )。
我记得asking a question about just this a while back .
呵呵!
关于javascript - Ember JS : how to send an action from a controller?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24564227/