全部,我是Backbone的新手。而我正试图理解Backone的模型。特别是如何定义模型。到目前为止,我没有看到关于如何为骨干定义模型的明确或正式的方法。 例如,让我们看一下帮助文档中的set方法。
设置
model.set(attributes,[options])
在模型上设置属性的哈希值(一个或多个)。
假设我们有一些如下代码。我认为set
方法实际上是将一个javascript对象分配给Model。
window.Employee = Backbone.Model.extend({
validate:function(attrs){
for(var key in attrs){
if(attrs[key] == ''){
return key + "can not be null";
}
if(key == 'age' && isNaN(attrs.age)){
return "age is numeric";
}
}
}
});
....
var attr = {}; // I can't not sure what is {} mean.
$('#emp-form input,#emp-form select').each(function(){
var input = $(this);//using jquery select input and select. and enumerate all of them.
attr[input.attr('name')] = input.val();//I am not sure what does it means
});
if(employee.set(attr)){
Employees.create(employee);
}
....
在这个例子中,我没有看到我们在java类或c#类中可以看到的经典方法来定义类字段或方法。但只能看到validate
功能。是否有人可以告诉我更多有关它的信息,以帮助我理解?感谢。
答案 0 :(得分:1)
要在Backbone中定义模型,您必须扩展Backbone.Model对象。例如,如果您想创建一个新的用户模型,您可以编写如下内容:
var User = Backbone.Model.extend({})
您还可以覆盖某些模型方法以满足您的需求。例如,您可以更改urlRoot
属性以告知模型他应该在何处获取数据。
Backbone模型在attributes
属性中包含您的数据。您可以使用模型set
方法更改这些属性,并且可以使用get
方法读取存储在模型中的值。因此,如果您有一些用户可以输入信息的输入,例如使用他的姓名和电子邮件创建新用户,并且您有一个表单,其中包含两个文本输入。你可以这样做:
var user = new User;
user.set('name', $('#name').val());
user.set('email', $('#email').val());
attributes = {
name: user.get('name'),
email: user.get('email')
};
user.save(attributes);
有很多方法可以重新考虑这些代码以使其看起来更好,但它有助于了解如何使用这些方法。您应该查看Backbone documentation以了解它们的工作方式。希望这有帮助!
PD:在我的示例中,我将属性设置为时间,但您也可以发送一个属性哈希值以在一次调用中设置更多值。
答案 1 :(得分:1)
JS中的模型基本上是数据的包装器,具有CRUD和简单的验证功能。要正常工作,您需要使服务器函数与(ajax)一起工作,我认为本教程全部都是http://backbonetutorials.com/what-is-a-model/。该模型不是数据库,而是与您的应用程序服务器端一起使用。
如果您对数据有自定义操作(不只是添加/编辑/删除),您可以手动“设置()”数据,使用“onchange”事件并在需要时刷新视图。您甚至可以仅在特定字段上附加“onchange”事件,并在视图中创建自定义函数以处理每个特殊字段(用于验证或显示)。
您可以在initialize和defaults值中定义字段,但不能定义自定义函数(ofc,您可以model.customFuntion()
但我不推荐它。
为了使其更具“clasical方式”,您需要使用其他Backbone函数http://backbonejs.org/#Collection-Underscore-Methods和Backbone.Collection。