backbonejs - 具有不同属性的相同模型

时间:2013-02-01 13:40:44

标签: jquery backbone.js

我是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);

感谢任何帮助!

感谢。

2 个答案:

答案 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模型实例上设置所需的任何属性,没有任何机制可以强制集合中的实例共享相同的属性。

实际上,用于显示这些实例的视图/模板可能会期望存在某些属性。如果某些属性是可选的,如在您的示例中,则在编写视图/模板时必须考虑到这一点,但如果属性集没有太大分歧,则不应该是一个大问题。