2011-09-15 4 views
16

मैं इस अवधारणा के आसपास अपने सिर को लपेटने की कोशिश कर रहा हूं।बैकबोनजेएस: एक दृश्य में एल: और टैगनाम के बीच क्या अंतर है:

क्या आप इसे मेरे लिए नीचे दबा सकते हैं और शायद el: विशेषता और tagName: विशेषता के बीच अंतर का एक सरल उदाहरण प्रदान कर सकते हैं?

कुछ उदाहरणों में, अलग-अलग विचार el: कभी-कभी और अन्य tagName: का उपयोग करते हैं।

मैं विशेष रूप से इस example

+1

एल हमारे डीओएम में मौजूदा तत्वों का संदर्भ देगा, जबकि टैगनाम हम दिए गए वर्गनाम के साथ टैगनाम के साथ एक नया डोम तत्व बनाएंगे। – STEEL

उत्तर

17

अंतर का अपने ही कार्यान्वयन के साथ चारों ओर खिलवाड़ कर रहा हूँ यह है:

एल वास्तविक डोम नोड एक पूरे के रूप को देखने का प्रतिनिधित्व करने के लिए एक संदर्भ संरक्षित करने के लिए इस्तेमाल किया जाना चाहिए।

इसका मतलब है कि आप आसानी से jQuery या w/e के साथ क्रियाएं कर सकते हैं। $ (this.el) .hide() या $ (this.el) .html ('अब मैं एक jquery ऑब्जेक्ट हूं');

टैगनाम केवल एक स्ट्रिंग है जिसका उपयोग डीओएम नोड एल के प्रकार को निर्धारित करने के लिए किया जाता है। डिफ़ॉल्ट div है, लेकिन यदि आप चाहते थे, तो आप इसे किसी भी HTML तत्व को कृपया बना सकते हैं।

पर विचार करें:

var myView = new view({ el: $("someExistingEl") }); 
+0

तो वे कभी भी एक साथ उपयोग नहीं किए जाते हैं? –

+2

वे एक साथ उपयोग नहीं किया जा सकता है। यदि आप सीधे 'एल' निर्दिष्ट करते हैं, तो आपके 'टैगनाम' को अनदेखा कर दिया जाएगा। –

+0

इन्हें एक साथ उपयोग किया जा सकता है, आप इसे स्पष्ट रूप से सेट नहीं कर सकते हैं .el = $ (कुछ भी) और इसे इस.tagName का सम्मान करने की उम्मीद है। यदि आप $ (this.el) .html ('कुछ सामान') का उपयोग करते हैं, तो यह जो कुछ भी होगा। यह नाम होगा। –

-3
var View = Backbone.View.extend({ 
    tagName: 'span', 
    id: 'identity', 
    class: 'classy', 
    el: $(this.tagName), // or 
    el: $('<' + this.tagName + ' />', { 
    id: this.id,  // identity 
    'class': this.class // classy 
    }) // this is jQuery shorthand for building an element fyi 
}); 

var view = new View(); 
:

var view = Backbone.View.extend({ 
    tagName: 'p', 
    initialize: function() { 
     _.bindAll(this, 'render'); 
    }, 
    render: function() { 
     $(this.el).html('I am a jQuery-ized paragraph'); 
     return this; 
    } 
}); 


$(document.body).append(new view().render().el); 
समस्या आप में चल रहा हो सकता है

है कि कभी कभी आप एक दृश्य की इन्स्टेन्शियशन, जिस स्थिति में टैगनाम अप्रासंगिक है पर एल सेट किया गया है

मुझे लगता है कि ठीक काम करना चाहिए।

+0

'el' में' el: $ (this.tagName) 'ऐसा नहीं होगा जो आपको लगता है। –

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