SetTimeout上下文绑定

时间:2016-03-16 18:34:51

标签: javascript jquery twitter-bootstrap

我试图设置一个超时来隐藏一个bootstrap模式,但即使我认为是正确的上下文绑定,我也无法隐藏模态。但是当我把它包含在一个函数中时,我确实让它工作了,因为我经常成功地使用bind命令,所以我想知道我哪里出错了。

function Foo() {
    this.$modal = $('#modal');
    return this;
}
// bad
Foo.prototype.submitModal = function() {
    var self = this;
    this.doAjaxSubmit()
        .done(function() {
                // undefined function
                setTimeout(self.$modal.modal.bind(self, 'hide'), 1000)
        })
}

// good
Foo.prototype.submitModal = function() {
    var self = this;
    this.doAjaxSubmit()
        .done(function() {
            // works
            setTimeout(hideModal, 1000)
        })

    function hideModal() {
        self.$modal.modal('hide');
    }
}

0 个答案:

没有答案