2012-05-17 17 views
9

में div को कैसे दिखाया/छुपाएं मेरे पास एक टेम्पलेट वाला एक विंडोज 8 ऐप है जिसमें एक div है जिसमें मैं data-win-control="WinJS.Binding.Template" के अंदर किसी संपत्ति के मूल्य के आधार पर दिखाना या छिपाना चाहता हूं। मैं भाग्य के बिना निम्नलिखित की कोशिश की है:WinJS टेम्पलेट में गतिशील रूप से

<div data-win-bind="visible: isMore"> ..content... </div> 

जहां isMore डेटाबाउंड आइटम की एक बूलियन संपत्ति है।

मैं यह कैसे कर सकता हूं? मुझे लगता है कि दृश्य संपत्ति मौजूद नहीं है?

उत्तर

14

आप सही हैं - visible संपत्ति मौजूद नहीं है, लेकिन आप सीएसएस और बाध्यकारी कनवर्टर का उपयोग करके उपस्थिति को नियंत्रित कर सकते हैं।

सबसे पहले, इस तरह, एक कनवर्टर समारोह है कि सीएसएस प्रदर्शन संपत्ति के लिए एक मूल्य के मूल्य के लिए एक बूलियन तब्दील हो बनाने के लिए WinJS.Binding.converter का उपयोग करें:

var myConverter = WinJS.Binding.converter(function (val) { 
    return val ? "block" : "none"; 
}); 

सुनिश्चित करें कि समारोह विश्व स्तर पर उपलब्ध है - मैं WinJS.Namespace.define उपयोग करने के लिए इन कन्वर्टर्स का संग्रह बनाएं जो मैं वैश्विक स्तर पर प्राप्त कर सकता हूं।

अब तुम, सीएसएस प्रदर्शन संपत्ति को नियंत्रित करने के लिए बाध्य इस तरह आपके डेटा में कनवर्टर का उपयोग कर सकते हैं: प्रदर्शन शैली करने के लिए "प्रारंभिक" के बजाय "ब्लॉक" का तो यह निर्धारित करने के लिए

<div data-win-bind="style.display: isMore myConverter"> ..content... </div> 
+2

और भी बेहतर हो जाएगा 'span' तत्वों के लिए भी इस्तेमाल किया जा सकता है। – philk

+0

मैं डिस्प्ले का उपयोग करता हूं: कोई भी संपत्ति नहीं .. डेटा तत्व से हटा दिया गया है लेकिन रिक्त डिस्प्ले वाले तत्व मौजूद हैं ... डिफ़ॉल्ट रूप से यह पहली पंक्ति का आकार लेता है। –

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