2013-05-28 6 views
12

में खाली दृश्य प्रदर्शित करें I HTML तालिका प्रस्तुत करने के लिए मैरियनेट कंपोजिट व्यू का उपयोग कर रहा हूं। बहुत अच्छा काम करता है! अब संग्रह में कोई रिकॉर्ड नहीं होने पर मैं एक संदेश प्रदर्शित करना चाहता हूं। मैं वर्तमान में इस संदेश को प्रस्तुत करने के लिए खाली दृश्य संपत्ति का उपयोग कर रहा हूं। हालांकि, संदेश तालिका रैपर में प्रस्तुत किया जाता है और तालिका कॉलम हेडर अभी भी दिखाई दे रहे हैं। बिल्कुल वही नहीं जो मैं चाहता हूं। आदर्श रूप में, मैं तालिका को छिपाना/निकालना और खाली रिकॉर्ड्स दृश्य प्रदर्शित करना चाहता हूं और फिर रिकॉर्ड जोड़े जाने पर इसे दिखाऊंगा। मैं इसे संभालने के लिए सबसे अच्छा तरीका खोजने के लिए संघर्ष कर रहा हूं। क्या वहां कोई सुझाव हैं?Marionette CompositeView

EmptyView = Marionette.ItemView.extend({ 
template: "#empty-template" 
}); 

SupportMemberView = Marionette.ItemView.extend({ 
template: "#member-template" 
}); 

SupportTeamView = Marionette.CompositeView.extend({ 
template: "#support-team-template", 
itemView: SupportMemberView, 
emptyView: EmptyView, 
itemViewContainer: 'tbody' 
}); 
+1

आप कुछ कोड पोस्ट कर सकते हैं: इस प्रकार अपने संयोजित दृश्य इस प्रकार, यह मानते हुए आप "_.isEmpty()" समारोह को बदलने के लिए Underscore.js पुस्तकालय या समकक्ष की पहुंच है परिभाषित किया जाएगा? –

उत्तर

5

एक चीज जो आप कर सकते हैं वह आपके एम्पार्टी पर है तालिका को छुपाने के लिए ऑनरेंडर फ़ंक्शन का उपयोग करें। इस फ़ंक्शन को रेंडर फ़ंक्शन के बाद बुलाया जाता है, इसलिए आप जिस तरह से चाहते हैं उसे देखने के लिए डोम को हेरफेर करने में सक्षम होंगे।

+0

मैं उस विकल्प को देखना शुरू कर रहा था लेकिन सोचा था क्योंकि मैं बैकबोन/मैरियनेट के लिए नया हूं, मैं पूछूंगा और देख सकता हूं कि क्या कुछ ऐसा था जो मुझे याद नहीं आया था। – Gentenator

+0

मुझे लगता है कि एक वैध परिदृश्य है और मुझे लगता है कि उस कार्य का कारण इस तरह की जरूरतों के लिए है। –

8

स्वीकृत उत्तर खाली दृश्य और टेम्पलेट के बीच एक निर्भरता लगाता है, जो सही नहीं लगता है।

मुझे लगता है कि ऐसा करने का एक वैकल्पिक तरीका समग्र दृश्य में गतिशील टेम्पलेट का उपयोग करना है। यह बेस व्यू getTemplate() विधि को ओवरराइड करके किया जाता है।

SupportTeamView = Marionette.CompositeView.extend({ 
getTemplate: function() { 
    if (_.isEmpty(this.collection)) { 
     return "#empty-template" 
    } else { 
     return "#support-team-template"; 
    } 
itemView: SupportMemberView, 
emptyView: EmptyView, 
itemViewContainer: 'tbody' 
}); 
+2

आपके विचार के साथ समस्या 'getTemplate' को केवल एक बार कहा जाता है, और आप इसे गतिशील चीज़ - संग्रह की सामग्री से जोड़ते हैं। तो यह विचार इस तथ्य पर फंस जाएगा कि संग्रह कभी नहीं बदलेगा। –

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