我有一個div#遊戲。 在這裏,我想從服務器的一些數據出現。 因此,當我使用初始化函數時,我用ajax調用從我的服務器請求數據到我的遊戲模型中。初始化後的主幹渲染 - 初始化get的觸發提前?
Game = Backbone.View.extend(
{
id: 'game',
initialize: function()
{
this.model.on('getGame', function() {});
this.model.getGame();
}
}
因爲回調在骨幹中似乎不起作用,所以必須進行觸發。 因此,應用程序將偵聽觸發器getGame
,該觸發器在服務器的數據已返回並保存到模型中的變量時觸發。
到目前爲止好,這一切工作。現在唯一的問題是,我想讓我的div#遊戲在完成時添加getGame函數中的所有數據。
但我認爲是因爲關閉了model.on(觸發器)初始化函數'認爲'在運行getGame()函數後就準備好了,而實際上並沒有附加服務器的數據。
所以父DIV#所有正在運行的以下內容:
this.$el.append(new Game().el);
也「認爲」股利#遊戲準備和追加DIV#遊戲本身,並給它一個淡入。
DIV#遊戲不包含服務器的數據還沒有,所以當它實際上並在圖像和文本的流行回來進入存在,而不是淡入在很好...
有人是否知道如何解決這個問題? 在此先感謝!
============================================== ========
解決
的問題是在$不用彷徨的異步特性和$。員額功能。這就是爲什麼在結果從服務器返回之前初始化已準備就緒。我將它改爲$ .ajax,並將async:false。現在它按照我編程/想要的順序加載。
謝謝您的詳細解釋Tallmaris,它會派上用場,因爲我會使用很多觸發器!
感謝您的快速反應,它看起來不錯! =) 但父母div#都知道什麼時候開始淡入? 而'this.parent'是一個對象,爲了能夠附加你必須附加到this.parent。$ el right? – Dex
是的,對不起,您需要'this.parent。$ el'。這個想法應該是'Game'視圖可以在'this。$ el.fadeIn()'中褪色。或者,您可以使用全局Backbone事件對象。我會用那個更新答案。 – Tallmaris
謝謝,我嘗試了一些谷歌搜索,發現問題實際上比我想象的要簡單得多!問題出在$ .get和$ .post函數的異步屬性中。這就是爲什麼在結果從服務器返回之前初始化已準備就緒。 我將它改爲$ .ajax,並將async:false。 現在它按照我編程的順序加載。 – Dex