【问题标题】:backbonejs - same model with different attributes骨干js - 具有不同属性的相同模型
【发布时间】:2013-02-01 13:40:43
【问题描述】:

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

感谢任何帮助!

谢谢。

【问题讨论】:

    标签: jquery backbone.js


    【解决方案1】:

    根据您的用户名,我认为您在 .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"
    });
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-07-03
        • 1970-01-01
        • 2013-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        相关资源
        最近更新 更多