Jquery 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

我是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);
感谢您的帮助


谢谢。

简短回答:您可以在主干上设置任何属性。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"
});