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的新手,你能告诉我我错在哪里吗
<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
首先,你的错误发生在循环依赖(无限循环(中,因为你有无限递归。任何时候你初始化像new People()
这样的人,initialize
该模型的方法调用相同的"new Person((",依此类推。
我猜你正在使用require.js。
所以尝试这样:
人类.js
define(function(require){
var Backbone = require('backbone');
var Human = Backbone.Model.extend({
defaults: {
name: 'Test',
surname: 'Testovyan',
sex: 1
}
});
return Human;
});
人.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);
});
});
这是使用相同的代码工作小提琴。
这是创建人员集合的最佳方式。创建模型,使用引用模型的模型属性创建集合。然后使用对象数组初始化您的集合,然后这些对象将自动成为模型或初始化没有模型的集合并从远程获取它们。
希望这有帮助。