2014-04-12 9 views
8

मैं नीचे की तरह एक जवाब सूची है:रीढ़ की हड्डी में मॉडल के आंशिक पुन: प्रस्तुत करने के लिए कैसे?

enter image description here

प्रत्येक सूची आइटम एक रीढ़ मॉडल है।

{ 
    title: 'answer title...', 
    content: 'answer content...', 
    voteStatus: 'up' 
} 

जब मैं क्लिक करें ऊपर वोट या नीचे वोट, मॉडल की voteStatus परिवर्तन हो जाएगा, और इस उत्तर आइटम फिर से प्रस्तुत करना हो।

अगर कोई जवाब की सामग्री में एक तस्वीर है, चित्र को फिर से प्रस्तुत करना होगा जा भी, लेकिन यह नहीं है कि मैं क्या चाहता हूँ।

कैसे मैं सिर्फ वोट बटन को फिर से प्रस्तुत करना सकता है जब मैं सिर्फ voteStatus बदलते हैं?

उत्तर

7

अपने AnswerView के अंदर एक सबव्यूव है जो केवल मतदान तीरों, VotingArrowsView को प्रस्तुत करने के लिए ज़िम्मेदार है। आप AnswerView की initialize समारोह के अंदर इस subview प्रारंभ होगा और उसके बाद पहले जोड़ें subview के el जनक दृश्य के el जब render जनक दृश्य ing के लिए:

var AnswerView = Backbone.View.extend({ 
    initialize: function(options){ 
    this.template = _.template($('#answerTmpl').html()); 
    this.votingArrowsView = new VotingArrowsView({ model: this.model }); 
    ... 
    }, 
    render: function(){ 
    this.$el.html(this.template(this.model.toJSON())); 
    this.$el.prepend(this.votingArrowsView.render().el); 
    return this; 
    }, 
    ... 
}); 

var VotingArrowsView = Backbone.View.extend({ 
    initialize: function(options){ 
    this.template = _.template($('#votingArrowsTmpl').html()); 
    this.listenTo(this.model, 'change:voteStatus', this.render); 
    }, 
    render: function(){ 
    this.$el.html(this.template(this.model.toJSON())); 
    return this; 
    } 
}); 
+0

यह ठीक काम करता है, बहुत बहुत धन्यवाद! – Robin

+0

लेकिन मैं एक और सवाल है, मुझे लगता है कि मैं 'VotingArrowsView' को voteButton की क्लिक घटनाओं (voteUp और voteDown क्लिक करें) फ़्रोम' AnswerView' को स्थानांतरित कर सकते हैं। जब मैं ऐसा करता हूं और बटन पर क्लिक करता हूं, तो यह काम नहीं करता है। ऐसा लगता है कि घटना सुनना टूट गया है। क्या आप मुझे बता सकते हैं क्यों? – Robin

+1

मैं 'render' जब' VotingArrowsView' में 'this.delegateEvents();' का उपयोग करता हूं। सब कुछ कर दिया! धन्यवाद :) – Robin

संबंधित मुद्दे