2011-12-22 30 views
8

Tôi đang cố gắng tải backbone.js để tải json. Các json tải nhưng tôi không chắc chắn làm thế nào để có được các mục vào bộ sưu tập của tôi. Hoặc có thể điều đó xảy ra tự động và tôi không thể theo dõi. vấn đề phạm vi?cách thêm json vào xương sống, bộ sưu tập js bằng cách tìm nạp

// js đang

//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" 
     } 
    ] 
} 

Trả lời

16

json của bạn không có trong định dạng đúng, bạn có thể sửa chữa các json hoặc thêm một gợi ý để xương sống trong các phương pháp phân tích cú pháp:

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

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

Hoặc sửa chữa JSON của bạn:

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

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

Vẫn không thể có được nó để làm việc. nếu tôi giữ json như nhau và thêm phân tích cú pháp: chức năng (phản hồi, xhr) { cảnh báo ("Bộ sưu tập: ClientList: phân tích cú pháp:" + response.items.length) tôi nhận được một cảnh báo. tôi đã thử thay đổi json và không nhận được thông báo nào trong bộ sưu tập hoặc xem trả lời trả lời.items; } tôi thấy cảnh báo. Tôi nhận được không có cảnh báo trong chức năng render của tôi trong quan điểm của tôi –

+0

@ColePeterson bạn có thể làm cho một jsfiddle – Esailija

+0

Tôi đã không tích cực làm thế nào để thiết lập này là jsfiddle vì vậy xin lỗi ví dụ của tôi là không đầy đủ. nhưng ở đây nó là ở jsfiddle [link] (http://jsfiddle.net/cole/bQHsb/) bất kỳ sự trợ giúp nào cũng tuyệt vời. một lần nữa các phân tích hoạt động nhưng render trong khung nhìn không bao giờ cháy. –

0

Nếu bạn sử dụng api còn lại, hãy thử tắt các thông số:

Backbone.emulateHTTP Backbone.emulateJSON

Các vấn đề liên quan