2013-08-21 2 views
2

지금 혼란스러워하고 있는데, 분명히 의심의 여지가없고 http://backbonerelational.org/에 대한 자세한 내용을 알려주십시오. 기본적으로이유/Backbone-relational 프레임 워크를 사용해야 할 때

, 우리가

  • 우리가 Backone.js 자체와 동일하게 달성 할 수없는 것을 사용하는 결정을해야 할 때 우리는 관계

  • 를 사용하는 이유

    1. ..? 다루 원하는대로 내가 모델을

      이에 대한 확인해야합니다 : 그것은 mainlink 및 sublinks을했다

      var navi = { 
          "mainLinkLabel": "Home", 
          "mainLinkHref": "/home.html", 
          "sublinks": [ 
           { 
            "sublinkLabel": "subHome1", 
            "sublinkHref": "/home/home1.html" 
           }, 
           { 
            "sublinkLabel": "subHome2", 
            "sublinkHref": "/home/home2.html" 
           }, 
           { 
            "sublinkLabel": "subHome3", 
            "sublinkHref": "/home/home3.html" 
           } 
          ] 
      } 
      

      :

    내가, 내가 이런 샘플 JSON을이 시나리오를 가지고있다 두 정보 :

    var bothModels = Backbone.Model.extend({ 
    
        defautls:{ 
    
         "mainLinkLable" : "default Lable", 
         "mainLinkHref" : "#", 
         "sublinks"  : [ 
          "sublinkLabel" : "default sublink", 
          "sublinkHref" : "#" 
         ] 
    
        } 
    
    }) 
    

    또는 각각에 대해 별도의 모델을 만들고 백본 관계형으로 연결해야합니다. 좋아요. 이거?

    var mainModel = Backbone.Model.extend({ 
        defautls:{ 
    
         "mainLinkLable" : "default Lable", 
         "mainLinkHref" : "#" 
    
        } 
    }) 
    
    var subModel = Backbone.Model.extend({ 
        defaults:{ 
          "sublinkLabel" : "default sublink", 
          "sublinkHref" : "#" 
        } 
    }) 
    

    그렇다면이 두 모델을 어떻게 연결할 수 있습니까? 그러면 어떤 이점이 있습니까? 나는 이것을 이해하기 위해 간단한 튜토리얼을 찾기 위해 인터넷을 검색했다 ..하지만 나는 함께 할 수 없었다. ..

    나는이 시나리오를 나에게 분명히 해준다. ..?

    Here is the fiddle to play

  • +0

    올바른 접근 방식을 취하고 있습니다. 2 개의 개별 모델을 작성하십시오.그리고 첫 번째 모델은 컬렉션 하위 모델이 될 속성을 갖습니다. 이렇게하면 하위 링크가 모델 내부의 중첩 컬렉션으로 사용됩니다. 이렇게하면 모든 종속 데이터가 –

    +0

    모델 외부의 별도 컬렉션 대신 단일 모델에있게됩니다. 라이브 데모를 위해 나를 보여 주거나 바이올린을 업데이트 할 수 있습니까? 그리고 여기에 백본 관계형 작업이 없습니다 ..? – 3gwebtrain

    답변

    2

    내가 전에 백본 관계로 일을하지 않았습니다. 하지만 두 모델을 사용하고 모델에 parse 메서드를 사용하고 주 컬렉션을 전달하는 구조를 만들 것입니다.

    jsFiddle

    var navi = { 
        "mainLinkLabel": "Home", 
        "mainLinkHref": "/home.html", 
        "sublinks": [{ 
         "sublinkLabel": "subHome1", 
         "sublinkHref": "/home/home1.html" 
        }, { 
         "sublinkLabel": "subHome2", 
         "sublinkHref": "/home/home2.html" 
        }, { 
         "sublinkLabel": "subHome3", 
         "sublinkHref": "/home/home3.html" 
        }] 
    }; 
    
    
    var MainModel = Backbone.Model.extend({ 
        defauts: { 
         "mainLinkLable": "default Lable", 
         "mainLinkHref": "#" 
        }, 
        parse: function(response) { 
         if(response.sublinks) { 
          this.subCollection = new SubCollection(response.sublinks || null, { parse: true }); 
         } 
         delete response.sublinks; 
    
         return response; 
        } 
    }) 
    
    var SubModel = Backbone.Model.extend({ 
        defaults: { 
         "sublinkLabel": "default sublink", 
         "sublinkHref": "#" 
        } 
    }); 
    
    var MainCollection = Backbone.Collection.extend({ 
        model: MainModel 
    }); 
    
    var SubCollection = Backbone.Collection.extend({ 
        model: SubModel 
    }); 
    
    var mainCollection = new MainCollection(navi, {parse : true}); 
    
    console.log(mainCollection); 
    

    그래서 당신은 각 모델 내부의 sublinks 모음에 액세스합니다. 해당 컬렉션을 제공하는

    this.subCollection을 사용하면됩니다.

    +0

    Shushath, 당신의 주도권을 줘서 고마워, 아직도 알렉산더의 대답을 들여다 볼 수 있니 ..? – 3gwebtrain

    1

    Backbone.js는 상자의 중첩 모델을 지원하지 않습니다. 실제로, 중첩 된 모델을 많이 다루겠습니다 : 송장에는 라인이 포함되어 있고, 부서에는 직원이 포함되어 있습니다.

    위의 모델을 중첩하면 bussine 모델을 살펴 봐야합니다. Backbone.Relational이 도움이 될 것입니다.

    기본적으로 Backbone.js 자체로 보관할 수는 없으며 사용자 정의 코드를 작성하여 parse 모델의 모델을 오버로드 할 수 있습니다. 우리가 작업 한 프로젝트 중 하나에서 작업을했지만 주 교훈을 얻었습니다. 자체 휠 재조정 대신 시간 기반 플러그인을 사용했습니다. 그리고 Backbone.Relational 좋은 선택이 될 것 같습니다.

    +0

    좋아,하지만 내 경우에는 내가 Backbone.relational을 사용하는 방법 .. 단서를 줄 수 있습니까? – 3gwebtrain

    +0

    예제를 확인하는 것이 좋습니다. http://backbonerelational.org/#examples –