1

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

任何帮助表示赞赏!

谢谢。

4

2 回答 2

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"
});
于 2013-02-01T14:11:36.823 回答
2

简短的回答:您可以在 Backbone.js 模型实例上设置您想要的任何属性,没有强制集合中的实例共享相同属性的机制。

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

于 2013-02-01T14:04:59.440 回答