2

백본을 처음 사용합니다. 목록의 각 노드가 잠재적으로 하위 컬렉션을 가질 수있는 임의의 깊은 중첩 목록이 있습니다. 예 :백본에서 임의로 중첩 된 목록을 나타내는 가장 간단한 방법

백본을 사용하여이 데이터 구조를 나타내는 가장 간단한 방법은 무엇입니까?

중요한 경우 처음에는 전체 구조를로드하거나 필요에 따라 각 수준을로드하는 것보다 우선 순위가 없습니다. 가장 쉬운 것이 무엇이든지.

나는 백본 관계의 경로를 가지 않는 편이 좋을 것입니다. 나는 이런 식의 과잉이라고 느낍니다.

귀하의 도움에 미리 감사드립니다.

답변

0

당신이 모델의 구문 분석 방법을 재정 의하여 계층 구조를 설정할 수 있습니다이

[ 
    { 
    title: "item 1", 
    nodes: [ 
     {title: "item a", 
     nodes: [ 
      {title: "item i"}, 
      {title: "item ii"} 
     ] 
     }, 
     {title: "item b" 
     } 
    ] 
    }, 
    { 
    title: "item 2" 
    } 
] 

과 같이 보입니다 개체에 사용자 지정 특성을 작성한 다음 나머지를 반환하여 Backbone이 다른 특성을 처리하도록합니다. 그런 다음 model.nodes으로 컬렉션에 액세스합니다. 그리고 함께 연주 할 피들 http://jsfiddle.net/C8HGY/

0

기본 모델은 children이고, 필요하면 new Collection으로 설정하면 간단한 모델을 만들 수 있습니다. 주요 부분은 JSON 데이터에서 모델로로드하는 것입니다.

var MyModel = Backbone.Model.extend({ 

}); 
var MyCollection = Backbone.Collection.extend({ 
    model: MyModel, 
    load: function(data) { 
     for(var i in data) { 
      if (_.isString(data[i])) { 
       this.add(new MyModel({ 
        title: data[i] 
       })); 
      } else { 
       var collection = new MyCollection(); 
       collection.load(data[i]); 
       this.add(new MyModel({ 
        title: i, 
        children: collection 
       })); 
      } 
     } 
    } 
}); 

var collection = new MyCollection(); 
collection.load({ 
    'item1': { 
     'item a': ['item i', 'item ii'], 
     0: 'item b', 
     1: 'item c' 
    }, 
    0: 'item2', 
    1: 'item3' 
}); 
console.log(collection); 

만이 "0"과이 예 항목에서를

"1"키 컬렉션의 beggining에 가고있다,하지만 당신은 아이디어를 볼 수 있습니다.

var Node = Backbone.Model.extend({ 
    parse: function(data) { 
    this.nodes = new Nodes(data.nodes, {parse: true}); 
    return _.omit(data, 'nodes'); 
    } 
}); 

var Nodes = Backbone.Collection.extend({ 
    model: Node 
}); 

var c = new Nodes(data_structure, {parse: true}); 
// parse: true is only needed if you pass the data as an argument 

Node.parse 데이터의 해시에서 nodes 속성을 추출 : 데이터 구조를 가정