2013-02-01 70 views
1

我是Backbonejs的新手,试图在此处了解模型。我定义了这样一个模型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

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

实际上,用来显示这些实例的视图/模板可能会期望某些属性出现。如果某些属性是可选的(如您的示例中所示),则在编写视图/模板时必须考虑这些属性,但如果属性集不会过多地分歧,则不应该是一个大问题。

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" 
}); 
相关问题