2011-08-16 85 views
2

第一次使用BackboneJS,但我有點難以創建一個「測驗」模型以及「Round」模型。測驗跟蹤分數,這樣一個測驗有很多回合。 「測驗」視圖創建一個新的「測驗」模型,然後創建一個「圓」視圖的新實例。 「圓形」視圖創建「圓形」模型的新實例。用戶繼續填寫「Round」視圖中關於「Round」模型的信息。這就是結構問題出現的地方。我應該如何跟蹤結果?使用BackboneJS創建測驗模型

「測驗」模型具有分數屬性,但「圓形」視圖無法訪問「測驗」模型的屬性,除非直接傳入。如果我這樣做了,我會通過測驗分數屬性基本上都是將來所有的觀點。這很好嗎?或者我應該創建一個全球分數變量?或者,我應該怎麼做?

回答

1

Round觀點不應該訪問Quiz模型,但Round可以通過這樣的

var observatory = $({}); 
var quiz = Backbone.Model.extend({ 
    initialize: function() { 
     observatory.bind('change_score', _.bind(this.changeScore, this)) 
    }, 

    changeScore: function(newScore) { 
     this.set({ 
      score: newScore 
     }); 
    } 
}); 
var round = Backbone.View.extend({ 
    events: { 
     'click button': 'changeScore' 
    }, 

    changeScore: function(event) { 
     observatory.trigger('change_score', [event.currentTarget.value]); 
    } 
}); 

這個代碼的一些全球性事件做到這一點,需要的jQuery

+0

這是什麼線的意義:VAR天文臺= $ ({}) – egidra

+0

在jQuery中,它將創建一個空的jq對象,您可以在其上掛起事件 –

+0

@egidra。 $({})用於將Jquery分配給將用作隊列持有者的空對象。 這是一個很好的例子:http://stackoverflow.com/a/7134043/4373616 –