我正在構建一個簡單的天氣部件。目前的天氣狀況是從國家氣象局xml文件中讀出的,然後我想解析和存儲模型中的相關數據,但$ .ajax的回調不會連接(我這樣做)。Backbone.Model回調和這個問題
var Weather = Backbone.Model.extend({
initialize: function(){
_.bindAll(this, 'update', 'startLoop', 'stopLoop');
this.startLoop();
},
startLoop: function(){
this.update();
this.interval = window.setInterval(_.bind(this.update, this), 1000 * 60 * 60);
},
stopLoop: function(){
this.interval = window.clearInterval(this.interval);
},
store: function(data){
this.set({
icon : $(data).find('icon_url_name').text()
});
},
update: function(){
$.ajax({
type: 'GET',
url: 'xml/KROC.xml',
datatype: 'xml'
})
.done(function(data) {
var that = this;
that.store($(data).find('current_observation')[ 0 ]);
});
}
});
var weather = new Weather();
數據被正確讀取,但我無法獲得回調的完成功能來調用存儲功能。 。(我會很高興,如果「做」只會解析,然後做「this.set」
在此先感謝您的幫助
替代方法:'.done(_。bind(function(){...},this))' – Yaroslav
這就是問題所在。謝謝。 –
我發現最有用的命名約定是'var _this = this;'在外部作用域中。 –