ui5

2014-08-28 5 views
13

में बाइंडिंग, संदर्भ, कॉन्टेक्स्ट बाइंडिंग और बाइंडिंग कॉन्टेक्स्ट, मैं कुछ दिनों के लिए संदर्भ, संदर्भ बाइंडिंग और बाइंडिंग कॉन्टेक्स्ट के बीच आंतरिक और संबंधों पर विचार कर रहा हूं और मुझे यकीन नहीं है कि मेरी तरफ एक बड़ी गलतफहमी है या नहीं। हो सकता है कि आप में से कुछ मुझे इसे हल करने में मदद कर सकें। मैं नीचे अपनी धारणा डाल रहा हूँ। मैं पहले कहना चाहूंगा कि मैं हमेशा ओडाटा मॉडल के साथ काम करता हूं।ui5

एक संदर्भ एक मॉडल में एक डेटा वस्तु लिए एक संदर्भ है:

यह है कि मैं क्या प्रलेखन पढ़ने को समझने के लिए विश्वास करते हैं।

एक एक घटना प्रदाता जो (क एक तरह से बाध्यकारी के मामले में) एक विशिष्ट संदर्भ की स्थिति का अवलोकन करता है और जब यह/डेटा लोड बदल गया है घटनाओं का उत्सर्जन करता है ... और इसलिए ईवेंट हैंडलर्स पंजीकरण के लिए अनुमति देता है बंधन मूल रूप से किया जाता है उस विशिष्ट संदर्भ पर घटनाओं के लिए। प्रोग्रामिंग ऑब्जेक्ट्स के मामले में, संपत्ति बाइंडिंग और सूची बाइंडिंग हैं (क्या यह सच है - या सूची हमेशा बाध्यकारी है जो सभी प्रासंगिक है?)।

किसी भी दर पर, मेरी समझ यह है कि एक सूची बाध्यकारी एक घटक के एकत्रीकरण बाध्यकारी का मॉडल-पक्ष है, जबकि एक संपत्ति बाध्यकारी को एक घटक और एक मॉडल के दृष्टिकोण (भ्रमित?) दोनों से बाध्यकारी संपत्ति कहा जाता है।

अब क्या मैं काफी नहीं मिलता है: संदर्भ बाध्यकारी new sap.ui.model.ContextBinding(oModel, sPath, oContext, mParameters?, oEvents?): एक रास्ता और एक पैरामीटर के रूप में एक संदर्भ लेता है। मुझे लगता है कि यह oContext बिल्कुल ऊपर वर्णित संदर्भ नहीं है लेकिन बाध्यकारी पर कुछ मेटाडेटा है। क्या ये सही है? या क्या यह एपीएच की परिभाषा है जो पथ पैरामीटर के सापेक्ष है?

यह भी अजीब लगता है जब आप एक संदर्भ स्वयं बनाना चाहते हैं new sap.ui.model.Contextabov(oModel, sPath, oContext) फिर से एक संदर्भ लेता है। मुझे विश्वास है कि यह सिर्फ एक दुर्भाग्यपूर्ण नामकरण चीज है जिसे मैं देख रहा हूं, लेकिन मुझे पूरा यकीन नहीं है।

फिर संदर्भ बाइंडिंग और बाइंडिंग कॉन्टेक्स्ट है। मुझे लगता है कि संदर्भ बाइंडिंग एक विशिष्ट संदर्भ के लिए बाध्यकारी है जैसा वर्णित ई है। और एक बाध्यकारी कॉन्टेक्स्ट एक संदर्भ के बारे में मेटा डेटा है- या बाध्यकारी सूची।

देखने के एक प्रोग्रामिंग बिंदु से, मुझे समझ नहीं आता क्यों निम्नलिखित काम करता है:

  • model.bindList() के माध्यम से संदर्भ के लिए बाध्य केवल एक रास्ता गुजर सूची बनाते हैं।
  • बाध्यकारी
  • परिवर्तन ईवेंट हैंडलर में डेटा प्राप्त (और OData-संपत्ति मॉडल में भरा देखें) पर कॉल get_contexts() बंधन को
  • परिवर्तन ईवेंट हैंडलर देते हैं।

और ऐसा लगता है कि एक संपत्ति बाध्यकारी के लिए ऐसा करने का कोई तरीका नहीं है जिसे मैं मानता हूं कि मैं model.bindProperty() के माध्यम से उत्पन्न कर सकता हूं। मैं बाध्यकारी उत्पन्न कर सकता हूं, लेकिन मुझे लगता है कि बाध्यकारी वास्तव में डेटा लाने के लिए कोई संभाल नहीं है।

मुझे उम्मीद है कि रैंपल मेरी समस्या बताता है। यदि आप पूछते हैं: आप क्या करना चाहते हैं? मैं वास्तव में इसके साथ कुछ भी नहीं करना चाहता, मैं समझ में नहीं आता कि यह कैसे काम करता है। Ui नियंत्रण के लिए बाध्यकारी और आगे काम ठीक है, लेकिन मैं वास्तव में समझना पसंद करूंगा कि हुड के नीचे क्या है। मैं डीबग फाइलें और यूनिट परीक्षणों को थोड़ा सा पढ़ रहा हूं, लेकिन आप लोगों के साथ चर्चा करना भी एक शानदार तरीका है।

यदि यह अस्पष्ट है तो मैं खुशी से कुछ भी जोड़ूंगा जो मदद करता है।

चीयर्स मिशेल

उत्तर

7

आपके प्रश्नों नीचे दिए जाते हैं। आशा करता हूँ की ये काम करेगा।

  1. अब क्या मैं काफी नहीं मिलता है: संदर्भ बाध्यकारी नया sap.ui.model.ContextBinding(oModel, sPath, oContext, mParameters?, oEvents?): एक रास्ता और एक पैरामीटर के रूप में एक संदर्भ लेता है। मुझे लगता है कि यह oContext बिल्कुल ऊपर वर्णित संदर्भ नहीं है लेकिन बाध्यकारी पर कुछ मेटाडेटा है। क्या ये सही है? या क्या यह एपीएच की परिभाषा है जो पथ पैरामीटर के सापेक्ष है?

    oContext सटीक होने के लिए ऊपर उल्लिखित संदर्भ है, sap.ui.model.Context है।

  2. यह भी अजीब लगता है जब आप एक संदर्भ स्वयं बनाना चाहते हैं तो नया sap.ui.model.Context(oModel, sPath, oContext) फिर से एक संदर्भ लेता है। मेरा मानना ​​है कि यह सिर्फ एक दुर्भाग्यपूर्ण नामकरण चीज है जिसे मैं देख रहा हूं, लेकिन मुझे पूरा यकीन नहीं है।

    मुझे लगता है कि प्रलेखन here आपको भ्रमित कर रहा है। असल में, sap.ui.model.Context केवल पैरामीटर के रूप में oModel और sPath लेता है। निम्नलिखित कोड मुझे sap-ui-core.js से मिलता है। आप पैरामीटर के बारे में JSDoc भाग देख सकते हैं वास्तव में कोड के साथ असंगत है। शायद वहां कुछ प्रकार का टाइपो है।

    /** 
    * Constructor for Context class. 
    * 
    * @class 
    * The Context is a pointer to an object in the model data, which is used to 
    * allow definition of relative bindings, which are resolved relative to the 
    * defined object. 
    * Context elements are created either by the ListBinding for each list entry 
    * or by using createBindingContext. 
    * 
    * @param {sap.ui.model.Model} oModel the model 
    * @param {String} sPath the path 
    * @param {Object} oContext the context object 
    * @abstract 
    * @public 
    * @name sap.ui.model.Context 
    */ 
    var Context = sap.ui.base.Object.extend("sap.ui.model.Context", 
    /** @lends sap.ui.model.Context.prototype */ { 
    
    constructor : function(oModel, sPath){ 
    
        sap.ui.base.Object.apply(this); 
    
        this.oModel = oModel; 
        this.sPath = sPath; 
    
    }, 
    
    metadata : { 
        "abstract" : true, 
        publicMethods : [ 
         "getModel", "getPath", "getProperty", "getObject" 
        ] 
    } 
    
    }); 
    
  3. देखने के एक प्रोग्रामिंग बिंदु से, मुझे समझ नहीं आता क्यों निम्नलिखित काम करता है:

    () model.bindList के माध्यम से संदर्भ के लिए बाध्य केवल एक रास्ता गुजर सूची बनाते हैं।

    बाध्यकारी पर get_contexts() को बाध्यकारी
    पर ईवेंट इवेंट हैंडलर में डेटा प्राप्त करें (और मॉडल में भरे ओडाटा-संपत्ति को देखें) में परिवर्तन-ईवेंट हैंडलर संलग्न करें।

    और ऐसा लगता है कि एक संपत्ति बाध्यकारी के लिए ऐसा करने का कोई तरीका नहीं है जिसे मैं मानता हूं
    मैं model.bindProperty() के माध्यम से उत्पन्न कर सकता हूं। मैं बाध्यकारी उत्पन्न कर सकता हूं, लेकिन बाइंडिंग I
    प्राप्त होता है ऐसा लगता है कि वास्तव में डेटा लाने के लिए कोई संभाल नहीं है।

    असल में आप attachChange ईवेंट sap.ui.model.PropertyBinding पर भी कर सकते हैं, और आप डेटा प्राप्त करने के लिए getValue() को कॉल कर सकते हैं।

2

धन्यवाद, एलन, जिसने वास्तव में मदद की। यह वास्तव में प्रलेखन के बारे में एक भ्रम था और getValue मुझे भी फिसल गया।

एक सवाल केवल परोक्ष शीर्षक में शामिल करने के लिए एक और जवाब जोड़ने के लिए:

संदर्भ बाध्यकारी: आप किसी दिए गए पथ करने के लिए स्थापित बंधन।

बाध्यकारी संदर्भ: किसी दिए गए बाध्यकारी के संदर्भ, यानी किसी घटक से आने पर, या किसी अन्य सेट बाध्यकारी।

चीयर्स मिशेल