我是Backbonejs的新手,试图在这里了解模型。我定义了这样的模型
var Employee=Backbone.Model.extend({
initialize: function(){
}
});
并设置这样的属性。对于一个模型实例,添加了一个属性,但我没有任何错误消息。我只是想知道模型定义在这里!对于不同的模型实例,它可能是不同的属性吗?
var emp1=new Employee();
var emp2=new Employee();
var emp3=new Employee();
var emp4=new Employee();
emp1.set({eName:"Suresh",eType:"employee",eNationality:"Indian"});
emp2.set({eName:"Håkan",eType:"contractor"});
emp3.set({eName:"Pelle",eType:"employee"});
emp4.set({eName:"Per",eType:"employee"});
var empList=new Employees([emp1, emp2, emp3, emp4]);
console.log(empList.models);
感谢任何帮助!
感谢。
答案 0 :(得分:4)
根据您的用户名,我认为这种混淆会导致您在.NET中定义模型的方式。假设您在服务器上有这样的模型定义:
public class Employee
{
[DisplayName("Employee ID")]
[Required(ErrorMessage = "ID Required")]
public int eId { get; set; }
[DisplayName("Employee Name")]
[Required]
public string EName { get; set; }
[DisplayName("Type")]
[Required]
public string eType { get; set; }
[DisplayName("Nationality")]
[Required]
public string eNationality { get; set; }
}
并且您希望将其映射到骨干模型,您无需重新定义字段。你可以这样做:
var Employee = Backbone.Model.extend({
idAttribute: 'eId'
});
然后,当您想要创建新员工时,您可以创建一个新的实例,就像您通过向其中添加数据来创建它一样:
var emp1 = new Employee({
eId: "1",
eName:"Suresh",
eType:"employee",
eNationality:"Indian"
});
答案 1 :(得分:2)
简短回答:您可以在Backbone.js模型实例上设置所需的任何属性,没有任何机制可以强制集合中的实例共享相同的属性。
实际上,用于显示这些实例的视图/模板可能会期望存在某些属性。如果某些属性是可选的,如在您的示例中,则在编写视图/模板时必须考虑到这一点,但如果属性集没有太大分歧,则不应该是一个大问题。