Backbone,Marionette - 同步执行

时间:2016-01-05 12:31:31

标签: javascript backbone.js

我的牵线木偶LayoutView中有一个函数,它有以下ui和事件块:

 ui: {
        runAction: ".picasso-form-action-run"
 },

 events: {
        "click @ui.runAction": "runFilter"
 },

runFilter函数如下所示:

runFilter: function(e) {
        e.preventDefault();
        e.stopPropagation();
        var _this = this;

        _this.ui.runAction.addClass('processing');
        _this.ui.runAction.text('Processing');
        _this.ui.runAction.attr('disabled', 'disabled');

        setTimeout(function() {
            _this.trigger("whiteboard:data:refresh"); // this fetch data
        }, 5);
    }

我的问题是,我需要在获取新数据之前更改runAction按钮的文本,但我能让它工作的唯一方法是为触发器添加超时。这似乎是一个黑客,并想知道这是做什么的正确方法。

侦听触发器的对象,从数据库加载新数据并呈现区域。

请帮助。

1 个答案:

答案 0 :(得分:0)

我可以看到你正在使用

e.preventDefault();
e.stopPropagation();

这可能是因为您提交了一个提交并重新加载页面的按钮。尝试使用类型="按钮"定义按钮。像这样:

<button id="myButton" type="button" /> 

这可以防止您捕获刷新页面的事件,并希望能够呈现您想要的内容。