Jquery backbonejs-具有不同属性的相同模型
我是Backbonejs的新手,试图理解这里的模型。我定义了一个这样的模型Jquery backbonejs-具有不同属性的相同模型,jquery,backbone.js,Jquery,Backbone.js,我是Backbonejs的新手,试图理解这里的模型。我定义了一个这样的模型 var Employee=Backbone.Model.extend({ initialize: function(){ } }); 并设置如下属性。对于模型的一个实例,又添加了一个属性,但我没有看到任何错误消息。我只是想知道这里的模型定义!对于模型的不同实例,它可能是不同的属性吗 var emp1=new Employee(); var emp2=new Employee(); var emp3
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);
感谢您的帮助
谢谢。简短回答:您可以在主干上设置任何属性。js模型实例没有强制集合中的实例共享相同属性的机制
实际上,用于显示这些实例的视图/模板可能会期望存在某些属性。如果某些属性是可选的,例如在您的示例中,您在编写视图/模板时必须考虑到这一点,但是如果属性集没有太大的差异,这应该不是一个大问题。简短回答:您可以在Backbone.js模型实例上设置任何想要的属性,没有强制集合中的实例共享相同属性的机制
实际上,用于显示这些实例的视图/模板可能会期望存在某些属性。如果某些属性是可选的,例如在您的示例中,您在编写视图/模板时必须考虑到这一点,但是如果属性集没有太大的差异,这应该不会是一个大问题。基于您的用户名,我假设混乱是由您在.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"
});
基于您的用户名,我假设您在.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"
});