javascript Backbone.Marionette.ItemView के लिए div wrap को बंद करना





2 Answers

जबकि मुझे यकीन है कि जिस तरह से आप चाहें व्यवहार करने के लिए इसे render करने के लिए आंतरिक रूप से हैक करने का एक तरीका है, इस दृष्टिकोण को लेना मतलब है कि आप संपूर्ण विकास प्रक्रिया के माध्यम से बैकबोन और मैरियनेट के सम्मेलनों से लड़ेंगे। ItemView को एक संबद्ध $el , और सम्मेलन द्वारा, यह एक div जब तक आप एक tagName निर्दिष्ट नहीं करते हैं।

मैं सहानुभूति देता हूं - खासकर लेआउट्स और क्षेत्र के मामले में, बैकबोन को अतिरिक्त तत्व उत्पन्न करने से रोकना असंभव प्रतीत होता है। मैं सम्मेलन को स्वीकार करने की सिफारिश करता हूं, जबकि आप शेष ढांचे को सीखते हैं और केवल तभी निर्णय लेते हैं जब यह अलग-अलग व्यवहार render लिए हैकिंग render करने के लायक है (या केवल एक अलग ढांचे का चयन करें)।

javascript backbone.js marionette

मैं यहां एंग्री बिल्लियों बैकबोन / मैरियनेट ट्यूटोरियल पोस्ट देख रहा हूं

http://davidsulc.com/blog/2012/04/15/a-simple-backbone-marionette-tutorial/

http://davidsulc.com/blog/2012/04/22/a-simple-backbone-marionette-tutorial-part-2/

और मैं यहां पोस्ट किए गए एक ही प्रश्न / आवश्यकता पर आया:

बैकबोन.जेएस रेंडर में div द्वारा लपेटना बंद कर देता है

लेकिन मैं केवल बैकबोन के लिए काम करने के लिए इसे प्राप्त कर सकता हूं। दृश्य, बैकबोन नहीं। Marionette.ItemViews।

उदाहरण के लिए, उपरोक्त सरल रीढ़ की हड्डी मेरियनेट ट्यूटोरियल लिंक से, AngryCatView लें:

AngryCatView = Backbone.Marionette.ItemView.extend({
  template: "#angry_cat-template",
  tagName: 'tr',
  className: 'angry_cat',
  ...
});

टेम्पलेट, #angry_cat-template , इस तरह दिखता है:

<script type="text/template" id="angry_cat-template">
  <td><%= rank %></td>
  <td><%= votes %></td>
  <td><%= name %></td>
  ...
</script>

मुझे क्या पसंद नहीं है, यह है कि AngryCatView की आवश्यकता है

  tagName: 'tr',
  className: 'angry_cat',

- अगर मैं टैग नाम लेता tagName , तो angry_cat-template को <div> द्वारा लपेटा जाता है।

मैं क्या चाहता हूं कि एचटीएमएल को एक ही स्थान (गुस्से में _at-टेम्पलेट) में निर्दिष्ट करना है और न ही cross.tat- टेम्पलेट में सबसे HTML (सभी <td> टैग) और AngryCatView में एक छोटा HTML ( <tr> टैग) नहीं है। मैं इसे angry_cat-template में लिखना चाहता हूं:

<script type="text/template" id="angry_cat-template">
  <tr class="angry_cat">
    <td><%= rank %></td>
    <td><%= votes %></td>
    <td><%= name %></td>
    ...
  </tr>
</script>

यह सिर्फ मेरे लिए क्लीनर महसूस करता है लेकिन मैं डेरिक बेली के जवाब के साथ मिल रहा हूं "बैकबोन.जेएस रेंडर में div द्वारा लपेटना बंद कर देता है" और इसे बैकबोन के लिए काम नहीं कर सकता। मैरियनेट।

कोई विचार?




यह पूरा करने के लिए jQuery के बजाय वेनिला जेएस का उपयोग करने के लिए क्लीनर नहीं होगा?

var Layout = Backbone.Marionette.LayoutView.extend({

  ...

  onRender: function () {
    this.setElement(this.el.innerHTML);
  }

  ...

});



Related