JavaScript自定义事件触发器问题

时间:2014-04-28 12:58:47

标签: javascript jquery backbone.js

我有一个详细信息视图,其中包含2个用于创建/编辑的按钮。

点击这些按钮,我会显示一个模态弹出窗口

var modal = new MyAppModalView({
    model: person
});

modal.bind("afterSave", function(values) {
    self.showMessage('Sucessfully submitted for saving', false, true);
    return true;
});

同样在Modal视图代码中,我有:

if (isNew) {
//Create flow
    this.model.save(myJSON, {
        url: "myapp/persons/create",
        success: function() {
            self.trigger("afterSave");
            self.removeModal();
        }
    });
} else {
//Edit flow
    this.model.save(myJSON, {
        url: "myapp/persons/edit",
        success: function() {
            self.trigger("afterSave");
            self.removeModal();
        }
    });
}

现在,在为“创建/编辑”保存后,我会触发afterSave

的事件

在为Create流触发事件时,不会触发Edit流。我不确定为什么会这样?

我尝试为模态(afterSave / afterUpdate)绑定2个单独的平均值,并为Create / Edit触发每个evens;仍然没有为Edit(afterUpdate)

调用触发器

代码在saveAction中调用,如下所示;

var MyAppModalView = BaseModal.extend({
....
saveAction: function(event) {
            var self = this;

}
});

1 个答案:

答案 0 :(得分:0)

您不必拥有与POST(创建)和PUT(保存)不同的URL。这会将你的代码修改为:

this.model.save(myJSON, {
    success: function() {
        self.trigger("afterSave");
        self.removeModal();
    }
});

如果正在调用removeModal(),则会触发“afterSave”,但您的编辑视图会导致afterSave消息无法以某种方式显示。您可以使用警报替换成功消息,以验证是否属实。