以下是刷新区域的onclick事件
'click div.tile-config ul.dropdown-menu li a.refresh': 'clickRefresh'
以下是我的区域刷新代码
clickRefresh: _.bind(function(e){
$(this).parents('.tile');
this.blockUI(e);
window.setTimeout(function(){
alert("unblockUI");
this.unblockUI(e);
}, 1000);
e.preventDefault();
},this),
blockUI: function(event){
$(event).block({
message: '<img src="res/lib/custom/img/loading.gif" align="absmiddle">',
css: {
border: 'none',
padding: '2px',
backgroundColor: 'none'
},
overlayCSS: {
backgroundColor: '#000',
opacity: 0.05,
cursor: 'wait'
}
});
},
unblockUI: function(event){
$(event).unblock({
onUnblock: function () {
$(event).removeAttr("style");
}
});
}
当我点击刷新链接时,它不会刷新并获得&#34;类型错误:this.blockUI(e)不是函数。&#34;。 请帮帮我。
答案 0 :(得分:1)
这可能是因为你不需要在主函数上放置绑定,而是在超时的回调上放置
试试这个
clickRefresh: function(e){
$(this).parents('.tile');
this.blockUI(e);
window.setTimeout(_.bind(function(){
alert("unblockUI");
this.unblockUI(e);
},this), 1000);
e.preventDefault();
},
编辑:所以当前你试图将块放在不是DOM元素的事件上。如果您想将阻止程序放在刷新按钮上,请使用event.currentTarget
,如此
blockUI: function (event) {
$(event.currentTarget ).block({
message: '<img src="//cdnjs.cloudflare.com/ajax/libs/file-uploader/3.7.0/loading.gif" align="absmiddle">',
css: {
border: 'none',
padding: '2px',
backgroundColor: 'none'
},
overlayCSS: {
backgroundColor: '#000',
opacity: 0.05,
cursor: 'wait'
}
});
},
unblockUI: function (event) {
$(event.currentTarget).unblock({
onUnblock: function () {
$(event.currentTarget).removeAttr("style");
}
});
}
小提琴http://jsfiddle.net/leighking2/xn0yz33n/
或者您可以使用this.$el
将其放在整个视图上(这也意味着您不需要传递事件),如此
blockUI: function () {
$(this.$el).block({
message: '<img src="//cdnjs.cloudflare.com/ajax/libs/file-uploader/3.7.0/loading.gif" align="absmiddle">',
css: {
border: 'none',
padding: '2px',
backgroundColor: 'none'
},
overlayCSS: {
backgroundColor: '#000',
opacity: 0.05,
cursor: 'wait'
}
});
},
unblockUI: function () {
$(this.$el).unblock({
onUnblock: function () {
$(this.$el).removeAttr("style");
}
});
}