Adding models to collection throws error "Uncaught TypeError: Cannot read property 'idAttribute' of undefined"
Adding models to collection throws error "Uncaught TypeError: Cannot read property 'idAttribute' of undefined"
我在尝试将多个模型从服务器添加到集合时遇到错误。它抛出错误:
Uncaught TypeError: Cannot read property 'idAttribute' of undefined
这是一个给出相同错误的测试示例:
<script type="text/javascript" src="js/jquery.3.2.1.min.js"></script>
<script type="text/javascript" src="js/underscore.1.8.3.min.js"></script>
<script type="text/javascript" src="js/backbone.1.3.3.min.js"></script>
<script type="text/javascript">
var Mymodel = Backbone.Model.extend({
defaults:{
id: null,
},
idAttributes: "id",
render: function(){
collection.add([{id:1, name: "name"},{id:2, name: "name"}])
}
});
mymodel = new Mymodel();
var mycollection = Backbone.Collection.extend({ model: mymodel });
collection = new mycollection();
mymodel.render();
</script>
集合class的model
property应该是模型构造函数,而不是实例。
Backbone.Collection.extend({ model: Mymodel });
模型class有一个idAttribute
property,单数,默认情况下已经'id'
。
将 id
属性放在 defaults
中是没有必要的,并且可能会导致以后出现问题。
除了前面几点,在模型中进行渲染是不好的做法。为此使用 view。
render: function(){
collection.add([{ id:1, name: "name" }, { id:2, name: "name" }])
}
我知道这是一个测试示例,但如果不是,模型 class 不应更改全局集合实例。 classes 的全部意义在于将责任范围限定在 class 本身,而不是它之外的任何内容。
使用这样的全局变量与使用 Backbone.
的全部要点背道而驰
需要最少的代码
var MyModel = Backbone.Model.extend({}),
MyCollection = Backbone.Collection.extend({ model: MyModel }),
collection = new MyCollection();
collection.add([
{ id: 1, name: "name" },
{ id: 2, name: "name" }
]);
我在尝试将多个模型从服务器添加到集合时遇到错误。它抛出错误:
Uncaught TypeError: Cannot read property 'idAttribute' of undefined
这是一个给出相同错误的测试示例:
<script type="text/javascript" src="js/jquery.3.2.1.min.js"></script>
<script type="text/javascript" src="js/underscore.1.8.3.min.js"></script>
<script type="text/javascript" src="js/backbone.1.3.3.min.js"></script>
<script type="text/javascript">
var Mymodel = Backbone.Model.extend({
defaults:{
id: null,
},
idAttributes: "id",
render: function(){
collection.add([{id:1, name: "name"},{id:2, name: "name"}])
}
});
mymodel = new Mymodel();
var mycollection = Backbone.Collection.extend({ model: mymodel });
collection = new mycollection();
mymodel.render();
</script>
集合class的model
property应该是模型构造函数,而不是实例。
Backbone.Collection.extend({ model: Mymodel });
模型class有一个idAttribute
property,单数,默认情况下已经'id'
。
将 id
属性放在 defaults
中是没有必要的,并且可能会导致以后出现问题。
除了前面几点,在模型中进行渲染是不好的做法。为此使用 view。
render: function(){
collection.add([{ id:1, name: "name" }, { id:2, name: "name" }])
}
我知道这是一个测试示例,但如果不是,模型 class 不应更改全局集合实例。 classes 的全部意义在于将责任范围限定在 class 本身,而不是它之外的任何内容。
使用这样的全局变量与使用 Backbone.
的全部要点背道而驰需要最少的代码
var MyModel = Backbone.Model.extend({}),
MyCollection = Backbone.Collection.extend({ model: MyModel }),
collection = new MyCollection();
collection.add([
{ id: 1, name: "name" },
{ id: 2, name: "name" }
]);