2011-12-22 11 views
8

मैं जेसन लोड करने के लिए backbone.js प्राप्त करने का प्रयास कर रहा हूं। जेसन लोड करता है लेकिन मुझे यकीन नहीं है कि आइटम को मेरे संग्रह में कैसे प्राप्त किया जाए। या शायद यह स्वचालित रूप से होता है और मैं बस पता नहीं लगा सकता। दायरा मुद्दा?जेसन को रीढ़ की हड्डी में जोड़ने के लिए, जेएस संग्रह लाने के लिए

// js कोड

//model 
var Client = Backbone.Model.extend({ 
    defaults: { 
     name: 'nike', 
     img: "http://www.rcolepeterson.com/cole.jpg" 
    }, 
}); 
//collection 
var ClientCollection = Backbone.Collection.extend({ 
    defaults: { 
     model: Client 
    }, 
    model: Client, 
    url: 'json/client.json' 
}); 
//view 
var theView = Backbone.View.extend({ 
    initialize: function() { 
     this.collection = new ClientCollection(); 
     this.collection.bind("reset", this.render, this); 
     this.collection.bind("change", this.render, this); 
     this.collection.fetch(); 
    }, 
    render: function() { 
     alert("test" + this.collection.toJSON()); 
    } 
}); 
var myView = new theView(); 

// json

{ 
    "items": [ 
     { 
      "name": "WTBS", 
      "img": "no image" 
     }, 

     { 
      "name": "XYC", 
      "img": "no image" 
     } 
    ] 
} 

उत्तर

16

आपका json सही स्वरूप में नहीं है, तो आप json को ठीक करने या पार्स विधि में रीढ़ की हड्डी के लिए एक संकेत जोड़ सकते हैं:

var ClientCollection = Backbone.Collection.extend({ 
    defaults: { 
     model: Client 
    }, 
    model: Client, 
    url: 'json/client.json', 

    parse: function(response){ 
     return response.items; 
    } 
}); 

या ठीक आपके JSON:

[ 
     { 
      "name": "WTBS", 
      "img": "no image" 
     }, 

     { 
      "name": "XYC", 
      "img": "no image" 
     } 
    ] 
+0

फिर भी यह काम करने के लिए नहीं मिल सकता है। अगर मैं जेसन को वही रखता हूं और पार्स जोड़ता हूं: फ़ंक्शन (प्रतिक्रिया, xhr) { अलर्ट ("संग्रह: क्लाइंटलिस्ट: पार्स:" + response.items.length) मुझे एक चेतावनी मिलती है। मैंने जेसन को बदलने की कोशिश की और संग्रह में कोई अलर्ट नहीं मिला या वापसी प्रतिक्रिया.इटम्स देखें; } मुझे एक चेतावनी दिखाई देती है। मुझे अपने दृश्य में मेरे रेंडर फ़ंक्शन में कोई अलर्ट नहीं मिला –

+0

@ कोलेपेटर्सन क्या आप एक jsfiddle – Esailija

+0

बना सकते हैं, मैं सकारात्मक नहीं था कि इसे कैसे सेट अप करें jsfiddle क्षमा करें, मेरा उदाहरण अपूर्ण है। लेकिन यहां यह jsfiddle [link] पर है (http://jsfiddle.net/cole/bQHsb/) कोई मदद अद्भुत होगी। फिर पार्स काम करता है लेकिन दृश्य में प्रस्तुत करने से कभी आग नहीं होती है। –

0

आप बाकी एपीआई का उपयोग करते हैं, इन मानकों को बंद करने का प्रयास करें:

Backbone.emulateHTTP Backbone.emulateJSON

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