2013-02-01 4 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" 
}); 
관련 문제