2012-01-09 26 views
10

Tôi relativly mới để Backbone.jsLàm thế nào để xây dựng một Bộ sưu tập/mẫu từ lồng nhau JSON với Backbone.js

Tôi có một JSON như hình ảnh cho thấy! Tôi thấy một số câu trả lời liên quan đến Backbone-quan hệ, nhưng vẫn không nhận được điểm!

Làm cách nào tôi có thể chuyển đổi số này JSON thành Backbone.js Bộ sưu tập/Mô hình ??

Tôi cập nhật mã nhưng không hoạt động như mong đợi! tôi không thể nhìn thấy một mô hình khi tôi làm:

Cấu trúc của tôi là:

[0]: là một tập hợp các mô hình

[Clefs] + ... + [Nghỉ ngơi]: là bộ sưu tập các mô hình

(Clefs) => [0] + ... + [9]: là mô hình (tiêu đề chứa một chuỗi, con đường quá)

Cảm ơn rất nhiều !!

EDIT (10.01.12):

Giải pháp của tôi:

window.initModel = Backbone.Model.extend({ 
    defaults: { 
    "title": "", 
    "path": "" 
    } 
}); 
window.CustomCollection = Backbone.Collection.extend({ 
    model: initModel 
}); 
window.Init = Backbone.Model.extend({ 
    url : function(){ 
    return "/api/data.json"  
    }, 

    parse: function(response) { 

    clefs = new CustomCollection(); 
    clefs.add(response.clefs);   
    this.set({clefs: clefs}); 

    ..... 

    rests = new CustomCollection(); 
    rests.add(response.rests);   
    this.set({rests: rests}); 
} 
}); 

this đã giúp tôi hiểu quá!

Nested Array

+0

Bạn đang tìm kiếm các mô hình/bộ sưu tập Backbone lồng nhau (đây không phải là 100% cần thiết, tùy thuộc vào yêu cầu của bạn). Bạn có thể có được bằng một mô hình Backbone duy nhất, với một đối tượng duy nhất. –

+0

@trouble Sau khi đi với Backbone-Relational tôi đã đi với giải pháp của bạn (ghi đè phân tích cú pháp). Với Backbone-Relational events 'add' etc đã không được kích hoạt và gây ra vấn đề. Cảm ơn vì đăng! – greenimpala

Trả lời

17

tôi tại nơi làm việc, vì vậy tôi không thể cung cấp cho bạn một câu trả lời được mã hóa hoàn toàn, nhưng ý chính là, bạn có thể làm như sau trong các mô hình cấp cao nhất của bạn để đạt được một hệ thống phân cấp mô hình lồng nhau:

var AmericasNextTopModel = Backbone.Models.extend({ 
    initialize: function(){ 

     this.set({ 
      clefs: new ClefCollection(this.get('clefs')), 
      accidentals: new AccidentalCollection(this.get('accidentals')), 
      notes: new NoteCollection(this.get('notes')), 
      rests: new RestCollection(this.get('rests')) 
     }); 
    } 
}); 

tôi không sử dụng xương sống quan hệ vì vậy tôi không thể cung cấp cho bạn một câu trả lời về điều đó.

Bạn có đang tạo trình chỉnh sửa/trình xem nhạc trực tuyến không? : D Cool Tôi rất muốn nhìn thấy nó khi bạn hoàn thành.

+0

Có tôi làm: D !! Tôi sẽ nói với bạn khi im xong! tôi thực hiện một cập nhật trong bài viết của tôi về câu trả lời ur! – trouble

0

Phương pháp reset (see 'reset') cho phép bạn vượt qua một mảng JSON để một bộ sưu tập. Điều này tương đương với phương pháp PUT, thay thế bộ sưu tập được chỉ định bằng hàm băm JSON.

Bạn cũng có thể sử dụng phương thức add để thêm vào bộ sưu tập hiện có hoặc chuyển băm JSON vào hàm tạo khi bạn tạo bộ sưu tập mới.

Bạn sẽ phải làm một số làm sạch cơ bản lên của mảng của bạn để có được nó trong một định dạng thích hợp, và sau đó convert it to JSON

+1

huh! Tôi thấy điểm của bạn! nhưng điều này thực sự không giúp tôi xây dựng bộ sưu tập thực sự của clefs, ..., phần còn lại không? Tôi thực sự cần phải có nó để tôi mô tả nó! chỉ cần sửa tôi nếu im sai! Cảm ơn bạn! – trouble

+0

Lỗi của tôi! hình trên là một JSON! xin lỗi – trouble

0

Tôi đang sử dụng PHP để lấy nguồn cấp dữ liệu dưới dạng JSON vì nó nằm trên một tên miền khác. Tôi lưu các kết quả đó vào một biến JS, và sau đó tôi đã thành công khi sử dụng nó để đưa nó vào bộ sưu tập Backbone của tôi ...

var feedCollection = new Backbone.Collection(); 
feedCollection.set(myFeedJSON.nestedObject.nestedArrayIWant); 
Các vấn đề liên quan