javascript - Ember JS : how to send an action from a controller?

标签 javascript ember.js

我有一个模式对话框,其实现方式与说明书中描述的类似: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/

相关文章:

javascript - 根据用户输入在 Highcharts 中添加系列

javascript - 如何使用 EmberData 创建非持久模型?

javascript - 操作不会从组件冒泡到路由(Ember 1.13)

ember.js - Ember.js 如何防止 CreateRecord 和 Commit 重复记录?

javascript - foreignObject 中的背景图像隐藏了 Firefox 上的其他 svg 元素

javascript - ES6 混淆中的作用域

javascript - 我在哪里可以找到一些关于 ember.js 的实用教程或练习?

ember.js - 从组件的模板调用闭包操作

javascript - 如何在最右边的文本框中禁用非整数输入?

javascript - 如何在 JavaScript 中通过滑动来跟踪链接?