我正在開發應用程序,使用backbone.js & jquery。我在模型下面的代碼:Backbone.js&jquery - show()元素
runReport: function() {
this.set({generatingReport: true});
//long computation...
this.set({generatingReport: false});
}
,並按照相應的視圖代碼(初始化函數):
...
var that = this;
...
this.model.bind("change:generatingReport", function() {
if(that.model.get("generatingReport") === true) {
$("#report").empty().append("<h1>Generating report...</h1>").show(0);
console.log("begin");
} else if(that.model.get("generatingReport") === false) {
$("#report").empty().append("<h1>Report generated</h1>").show(0);
console.log("end");
}
});
這裏是查看代碼運行的動作:
...
events {
"click #btn-run": "runReport"
}
...
runReport: function() {
this.model.runReport();
}
我的問題是根本沒有顯示「Generatin report ...」消息(打印日誌消息)。生成報告時出現「生成報告」。
如果我下面(見IF分支添加警報):
this.model.bind("change:generatingReport", function() {
if(that.model.get("generatingReport") === true) {
$("#report").empty().append("<h1>Generating report...</h1>").show(0);
console.log("begin");
alert("stop!");
} else if(that.model.get("generatingReport") === false) {
$("#report").empty().append("<h1>Report generated</h1>").show(0);
console.log("end");
}
});
然後 「生成報表...」 顯示。在「長計算...」部分,沒有可能隱藏消息的隱藏jquery調用。
任何想法這裏發生了什麼?
順便說一句,長時間的計算需要大約20秒,所以「生成報告...」被立即替換爲「生成報告」並非立即生效# – 2012-03-29 21:09:29
「#報告」在哪裏?它是視圖控制的HTML的一部分,它的一部分是'el'?還是它已經存在的頁面的另一部分? – 2012-03-29 21:13:01
是的,它是視圖控件的參數 – 2012-03-30 04:11:44