2013-02-12 13 views
6

के साथ यूआई हैश समस्याएं निम्नलिखित Layout में, मैं onRender के भीतर एक चयन सूची प्रदर्शित करने के लिए CollectionView जोड़ रहा हूं। उसके तुरंत बाद, मैं दृश्य के भीतर सभी नियंत्रणों को सक्षम या अक्षम करने के लिए ui हैश का उपयोग कर रहा हूं। यह new App.View.Categories द्वारा उत्पन्न SELECT के लिए काम नहीं करता है।बैकबोन मैरियनेट लेआउट

क्या यह चाहिए? या क्या यूआई हैश Regions पर Layout पर काम नहीं करता है?

App.View.UploadFile = Backbone.Marionette.Layout.extend({ 
    template: '#upload-file-template', 
    regions:{ 
     category: 'td:nth-child(4)' 
    }, 
    ui:{ 
     inputs: 'textarea, select, .save' 
    }, 
    onRender: function(){ 
     this.category.show(
      new App.View.Categories({ 
       collection: App.collection.categories 
      }) // generates the SELECT list 
     ); 

     console.log(this.ui.inputs); // Length 2. Missing select. 
     console.log(this.$('textarea, select, .save')); // Length 3 

     this.ui.inputs.prop(
      'disabled', (this.model.get('upload_status')!='staged') 
     ); 
    } 
}); 

उत्तर

11

यह काम करने की अपेक्षा करने के तरीके से काम करना चाहिए। कठपुतली स्रोत में प्रश्न में कोड यहाँ है: https://github.com/marionettejs/backbone.marionette/blob/master/src/marionette.itemview.js#L49-L51

bindUIElements() करने के लिए कॉल क्या jQuery चयनकर्ता वस्तुओं के लिए में ui हैश परिवर्तित करता है, और यह कहा जाता है ठीक पहले onRender विधि कहा जाता है।

क्या आप त्रुटियां देख रहे हैं? या चयनकर्ता बस कुछ भी वापस नहीं कर रहा है, और तत्वों पर कोई प्रभाव नहीं पड़ता है?


अद्यतन:

आह! बेशक ... मैं आपके कोड पर पर्याप्त ध्यान नहीं दे रहा था। आप सही हैं कि यूआई तत्व चयनकर्ता इस क्षेत्र में उप-दृश्य जोड़ने से पहले होते हैं। मैंने पहले कभी इस स्थिति में भाग नहीं लिया है ... लेकिन ऐसा लगता है कि हम कुछ ठीक करना/समर्थन करना चाहते हैं।

अभी के लिए, मैं सुझाव दे सकता हूं कि सबसे अच्छा कामकाज 'this.bindUIElements();' को कॉल करना होगा। आपके ऑनरेंडर विधि के बहुत अंत में। यह ui तत्वों को चयनकर्ताओं को फिर से बांधने के लिए मजबूर करेगा।

मैं इसके लिए बेहतर समाधान देखने के लिए, जिथब मुद्दों की सूची में भी एक समस्या जोड़ूंगा। मुझे नहीं पता कि मैं इसे कब प्राप्त कर पाऊंगा, लेकिन कम से कम इसे ठीक करने के लिए चीजों की सूची में प्राप्त होगा।

+0

कोई त्रुटि नहीं है। मैंने ऊपर कुछ उदाहरण console.logs जोड़ा। चयनकर्ता चयन छोड़ रहा है, लेकिन यह अन्य दो तत्वों को वापस कर रहा है। जैसा कि आप दूसरे console.log द्वारा देख सकते हैं, वही चयनकर्ता $ कार्यों में लपेटा गया है। – Bart

+0

स्रोत को देखते हुए, मुझे लगता है कि मुझे समस्या दिखाई दे रही है। चयन आइटम को रेंडर के भीतर जोड़े जाने से पहले उन वस्तुओं को बाध्य किया जाता है। शायद इस तरह के क्षेत्रों को जोड़ने पर, रेंडर के भीतर, सबसे अच्छा अभ्यास नहीं है। क्या आपके पास सिफारिश करने के लिए एक और पैटर्न है? – Bart

+0

अद्यतन के लिए धन्यवाद! – Bart

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