2012-05-17 7 views
6

में एक दृश्य को कैसे दिखाना/छुपाएं, मैं लोड पर छिपाने के लिए एक दृश्य चाहता हूं, फिर जब कोई उपयोगकर्ता किसी लिंक पर क्लिक करता है तो यह दृश्य प्रदर्शित करेगा। क्या कोई मेरे कोड की समीक्षा कर सकता है और मुझे बता सकता है कि मैंने क्या गलत किया है? http://jsfiddle.net/stevenng/uxyrw/5/एम्बरजेएस

+2

सका आप अपने वास्तविक कोड के साथ एक बेवकूफ बनाते हैं? आपके द्वारा चिपकाया गया ब्लॉक अपूर्ण लगता है। –

+0

टेम्पलेट्स को देखे बिना, यानी पृष्ठ पर दृश्य कैसे लगाए जा रहे हैं, यह डीबग करना असंभव है। मेरा सुझाव 'क्लिक' फ़ंक्शन में कुछ 'Em.Logger.log' कथन जोड़ देगा (यह सुनिश्चित करने के लिए कि इसे वास्तव में कहा जा रहा है) और वास्तव में विचारों में कुछ डाल दें ताकि वे केवल खाली divs न हों। इस जेएसफ़िल्ड को संपादित करने का प्रयास करें: http://jsfiddle.net/pjmorse/uxyrw/4/ – pjmorse

उत्तर

10

मैं दृश्य आपको छिपाने/शो करना चाहते हैं के लिए एक सरल isVisibleBinding बनाने के लिए, देखना होगा http://jsfiddle.net/pangratz666/dTV6q/:

Handlebars:

<script type="text/x-handlebars" > 
    {{#view App.ParentView}} 
     <h1>Parent</h1> 
     <div> 
      <a href="#" {{action "toggle"}}>hide/show</a> 
     </div>  
     {{#view App.ChildView isVisibleBinding="isChildVisible" }} 
      {{view Em.TextArea rows="2" cols="20"}} 
     {{/view}}   
    {{/view}} 
</script>​ 

App.parentView = Em.View.extend({ 
    click: function() { 
    App.childView.set('isVisible', true); 
    } 
}); 

App.childView = Em.View.extend({ 
    isVisible: false 
}); 

यहाँ jsfiddle है

जावास्क्रिप्ट:

App.ParentView = Em.View.extend({ 
    isChildVisible: true, 

    toggle: function(){ 
     this.toggleProperty('isChildVisible'); 
    } 
}); 

App.ChildView = Ember.View.extend(); 

अपने नामकरण सम्मेलनों के बारे में एक नोट: कक्षाएं UpperCase और उदाहरणों lowerCase नामित किया जाना चाहिए। इसके बारे में blog post देखें।

+0

आपकी मदद के लिए धन्यवाद, एक और त्वरित प्रश्न पंग्रेट्स। यदि बच्चा दृश्य {{प्रत्येक}} में था और यह कई और बच्चे दृश्य उत्पन्न करता है, तो मैं चयनित विशिष्ट में शो/छुपा टॉगल कैसे लक्षित करूं? – Steve

+2

मैं एक 'संग्रह दृश्य' बनाउंगा जो 'itemViewClass' दृश्यता की टॉगलिंग को संभालता है। Http://jsfiddle.net/pangratz666/ZTdPF/ देखें। – pangratz

-1

कुछ कारणों के लिए Valuebinding के लिए मुझे इतना childView अंदर parentView संपत्ति को देख फ्लॉप काम मेरे लिए चाल किया

बर:

<script type="text/x-handlebars" > 
    {{#view App.ParentView}} 
     <h1>Parent</h1> 
     <div> 
      <a href="#" {{action "toggle"}}>hide/show</a> 
     </div>  
     {{#view App.ChildView }} 
      {{view Em.TextArea rows="2" cols="20"}} 
     {{/view}}   
    {{/view}} 
</script>​ 

Coffeescript:

App.ParentView = Em.View.extend 
    isChildVisible: true 
    toggle: -> 
    @toggleProperty 'isChildVisible' 
App.ChildView = Em.View.extend 
    isVisible: (-> 
    @get('parentView.isChildVisible') 
).property '_parentView.isChildVisible'