Jan*_*ray 1 javascript backbone.js
这是官方示例应用:
http://documentcloud.github.com/backbone/docs/todos.html
我对集合与其属性之间的关系感到困惑 localStorage = new Store(..)
不应该这样,model因为你collection.save()无论如何都做不到?
另外,我尝试实现类似的东西,但它不起作用
var Person = Backbone.Model.extend({
defaults: {
name:'no-name',
age:0
}
});
var Persons = Backbone.Collection.extend({
model: Person,
localStorage: new Store('Persons'),
initialize: function(){
console.log('collection initialized');
}
});
window.people = new Persons();
var p1 = new Person({name:'JC',age:24});
p1.save({text:'hello'}); //<--- Uncaught TypeError: Cannot read property 'localStorage' of undefined
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
它实际上.create()是一个集合的功能,允许集合"保存"到localStorage.
createOnEnter: function(e) {
var text = this.input.val();
if (!text || e.keyCode != 13) return;
Todos.create({text: text});
this.input.val('');
},
Run Code Online (Sandbox Code Playgroud)
然后,这允许模型实例使用该.save({attr:value})函数对其进行操作.
在模型的构造函数中调用modelInstance.save() 没有已定义localStorage属性将导致错误:
Uncaught TypeError: Cannot read property 'localStorage' of undefined
但是,由于模型现在通过该collectionInstance.create()方法保存在localStorage中,modelInstance.save({attr:value})现在可以用来修改它.
因此,总之,Models只具有save()允许持久性的功能,但Collection对象具有create()允许持久性的功能.
为了使用它们,必须正确设置集合和模型中的REST URL,或者必须在构造函数中实例化localStorage插件(取决于设置)
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |