2013-08-20 6 views
5

मैं एक बैकबोन दृश्य जहां className एक समारोह के साथ गतिशील सेट कर दिया जाता है:गतिशील बैकबोन दृश्य पर className सेट प्रस्तुत करना

app.Views.ItemRequestView = Backbone.View.extend({ 

    tagName  : 'tr', 

    className : function(){ 

     var classRow = ''; 

     if(this.model.getState() == app.Models.Request.status.wait.key) { 
      classRow = app.Models.Request.status.wait.color + ' bolder'; 
     } 
     else if(this.model.getState() == app.Models.Request.status.confirm.key){ 
      classRow = app.Models.Request.status.confirm.color + ' bolder'; 
     } 

     return classRow; 
    }, 

जब मैं देखने के मॉडल को अद्यतन मैं एक परिवर्तन घटना जो दृश्य प्रदान को गति प्रदान । समस्या यह है कि क्लासनाम को प्रस्तुत करने के साथ पुन: गणना नहीं किया जाता है ... जब मैं दृश्य प्रस्तुत करता हूं तो मैं कक्षा नाम को फिर से कैसे समझा सकता हूं?

किसी को भी कोई विचार है? धन्यवाद

उत्तर

6

आपको render विधि के बाद मैन्युअल रूप से class अपडेट करना होगा। रीढ़ केवल समय एक बार _ensureElement विधि के दौरान अपने दृश्य के तत्व की className initializes:

_ensureElement: function() { 
     if (!this.el) { 
     var attrs = _.extend({}, _.result(this, 'attributes')); 
     if (this.id) attrs.id = _.result(this, 'id'); 
     if (this.className) attrs['class'] = _.result(this, 'className'); 
     var $el = Backbone.$('<' + _.result(this, 'tagName') + '>').attr(attrs); 
     this.setElement($el, false); 
     } else { 
     this.setElement(_.result(this, 'el'), false); 
     } 
} 

आप एक बार देख ले, तो यह तत्व पहले से मौजूद है के मामले में एक जांच है। वैसे भी, आपको लगता है कि मैन्युअल रूप से कर सकते हैं अपने render विधि में:

render: function(){ 
    //Your logic 
    this.$el.attr('class', _.result(this, 'className')); 
} 
+0

अद्भुत, बहुत बहुत शुक्रिया! – user2568596

+4

ओवरकिल अलर्ट, आपको केवल यह देखने की ज़रूरत है कि दृश्य को प्रदर्शित करने से पहले यह $ el.addClass ('classname') है। –

+1

जब तक आप कक्षा जोड़ने से कुछ अधिक जटिल नहीं कर रहे हैं (कुछ जोड़ना, कुछ टॉगल करना आदि)। इसी कारण से यह अधिक नहीं है, यह मजबूत है। –

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