2014-10-07 2 views
0
define(function(require) { 
     var $ = require('jquery'), 
       Backbone = require('backbone'), 
       People = Backbone.Model.extend({ 
      initialize: function() { 

       var people_object = new People({name: "How Bizarre", artist: "OMC"}); 
       var people_collections = new PeopleCollection([people_object]); 
       console.log(people_collections.models); 
      } 

     }), 
     PeopleCollection = Backbone.Collection.extend({ 
      model: People, 
     }); 

     return { 
      People: People, 

     }; 

    }); 



    require(['jquery', 'backbone', 'app/models/persons'], function($,Backbone,persons{   
      var p = new persons.People(); 
    }); 

여기에 코드를 써서 콘솔에 데이터를 표시합니다. 콘솔에 다음과 같은 오류 메시지가 표시됩니다. 백본 js.can u에 대한 새로운 소식입니다.콘솔에 모델 데이터를 인쇄 할 수 없습니다

<error> 
w.pick 
a.Model 
r 
Backbone.Model.extend.initialize 
a.Model 
r 
Backbone.Model.extend.initialize 
a.Model 
r 
Backbone.Model.extend.initialize 
a.Model 
+0

모델에 컬렉션을 만드는 이유는 무엇입니까? 그리고이 코드에는 몇 가지 버그가 있습니다. 'Backbone.Model'과'Backbone.Collection'을 사용하는 방법을 설명하려고합니다. –

답변

0

먼저 모든 오류의 내가 잘못 위치를 가지 무한 재귀가 원인, 순환 종속성 (무한 루프)에서 발생합니다. new People()과 같은 사람을 초기화 할 때마다 해당 모델의 initialize 메서드는 동일한 'new Person()'을 호출합니다.

나는 require.js을 사용하고있는 것 같습니다.

그래서 다음과 같이하십시오 :

human.js

define(function(require){ 
    var Backbone = require('backbone'); 

    var Human = Backbone.Model.extend({ 
     defaults: { 
      name: 'Test', 
      surname: 'Testovyan', 
      sex: 1 
     } 
    }); 

    return Human; 

}); 

people.js

define(function(require){ 
    var Backbone = require('backbone'); 
    var Human = require('path/to/human'); 
    var People = Backbone.Collection.extend({ 
     initialize: function() { 
      console.log(this); 
     }, 
     model: Human, 
     url: '/path/to/remote/url' 
    }); 

    return People; 
}); 

controller_or_view.js

define(function(require){ 

    require(['jquery', 'backbone', 'path/to/people'], function() { 
     var newPeople = [{name: 'John', surname: 'Smith'}, {name: 'Jane', surname: 'Smith'}]; 
     var people = new People(newPeople); 
     }); 

}); 

동일한 코드로 fiddle이 작동합니다.

인물 컬렉션을 만드는 가장 좋은 방법입니다. 모델을 작성하고 모델을 참조하는 모델 속성이있는 콜렉션을 작성하십시오. 그런 다음 객체 배열을 사용하여 컬렉션을 초기화하면 자동으로 모델이되거나 모델없이 컬렉션을 초기화하고 원격에서 가져옵니다.

희망이 도움이됩니다.

관련 문제