2012-04-21 5 views
7

मैं एक मॉडल नाम का व्यक्ति है:किसी दृश्य से कोई मॉडल डेटा का उपयोग करने के लिए कैसे backbone.js में

var person_view = Backbone.View.extend({ 
    model : person, 
    output: function(){ 
     console.log(this.model.get('names')) 
    } 
}); 

देखने का एक वस्तु निर्मित:

var person = Backbone.Model.extend({ 
     initialize: function(){ 
     console.log('cool'); 
     }, 
     defaults:{ 
      names:['a','k','d','s','h','t'] 
     } 
    }) 

अब मैं दृश्य दिखाई देते हैं:

var obj = new person_view() 

पहुँच नाम करने के लिए प्रयास करें:

obj.output() 

लेकिन मैं यह त्रुटि आई:

TypeError: Object function(){ parent.apply(this, arguments); } has no method 'get' 

तुम मुझे दिखा सकते हैं कि कैसे चीजों को ठीक से करने के लिए मैं केवल अभी backbone.js पता करने के लिए तो मेरे साथ सहन कृपया हो रही शुरू कर दिया है?।

उत्तर

9

आप अपने मॉडल प्रारंभ करने से पहले आप इसे उपयोग कर सकता है:

var person_view = Backbone.View.extend({ 
    initialize: function() { 
     this.model = new person(); 
    }, 
    output: function(){ 
     console.log(this.model.get('names')) 
    } 
}); 
5

मॉडल गुजर जब आप दृश्य extend के बजाय, आप इसे पारित करने के लिए जब आप कोई नया दृश्य का निर्माण चाहता हूँ:

var person_view = Backbone.View.extend({ 
    output: function(){ 
    console.log(this.model.get('names')) 
    } 
}); 

var obj = new person_view({ 
    model : new person() 
}); 
1

आपका "person_view" किसी भी मॉडल (जिसे उस दृश्य से अपेक्षित है) तक नहीं पहुंच सकता है, क्योंकि कोई मॉडल अभी तक नहीं बनाया गया है, जब आप "person_view" घोषित कर रहे हैं और इसके फ़ंक्शन को कॉल कर रहे हैं। पहले मॉडल बनाएं, फिर इसे "person_view" घोषित करते समय इसे देखने के लिए पास करें।

var model_person_for_view= new person(); 
var obj = new person_view(model:model_person_for_view); 
obj.output(); 
संबंधित मुद्दे