2013-02-28 5 views
0

전체, 저는 Backbone의 초보자입니다. 그리고 Backone의 모델을 이해하려고 노력하고 있습니다. 특히 모델을 정의하는 방법. 지금까지 백본 모델을 정의하는 방법에 대한 명확한 공식적인 방법을 보지 못했습니다. 예를 들어 도움말 문서의 set 메소드를 보자.백본 세트 방법 및 모델을 이해하십시오.

모델의 특성 (하나 이상의)의 해시를 설정

model.set (속성, [옵션])을 설정합니다.

다음과 같은 코드가 있다고 가정 해보십시오. 난 set 메서드는 실제로 모델에 자바 스크립트 개체를 할당 생각합니다.

window.Employee = Backbone.Model.extend({ 

     validate:function(attrs){ 
     for(var key in attrs){ 
      if(attrs[key] == ''){ 
       return key + "can not be null"; 
      } 
      if(key == 'age' && isNaN(attrs.age)){ 
       return "age is numeric"; 
      } 
     } 
     } 
    }); 

    .... 
    var attr = {}; // I can't not sure what is {} mean. 
    $('#emp-form input,#emp-form select').each(function(){ 
     var input = $(this);//using jquery select input and select. and enumerate all of them. 
     attr[input.attr('name')] = input.val();//I am not sure what does it means 
    }); 
    if(employee.set(attr)){ 
      Employees.create(employee); 
     } 
    .... 

이 예에서는 클래스 필드 나 메소드를 정의하기 위해 Java 클래스 나 C# 클래스에서 볼 수있는 고전적인 방식을 보지 못했습니다. 그러나 단지 validate 기능을 볼 수 있습니다. 나를 이해하는데 도움이 될만한 사람이 있습니까? 감사.

+0

모델에서 무엇을하는지 잘못되었습니다. 모델에서 설정하기 전에보기의 값을 확인해야합니다. –

+0

제 친구는 JavaScript에서 OOP의 작동 방식을 먼저 읽어 보시기 바랍니다. ** ** C# 및 Java에서 작동하는 방식과 매우 다릅니다 **. –

+0

내 친구, 존, 고마워. 저에 대한 몇 권의 책을 추천 해주십시오. –

답변

1

Backbone에서 모델을 정의하려면 Backbone.Model 개체를 확장해야합니다. 예를 들어, 당신은 당신이 다음처럼 작성할 수있는 새로운 사용자 모델을 만들려면 있을지 :

var User = Backbone.Model.extend({}) 

당신은 또한 당신의 필요를 채우기 위해 일부 모델 방법을 덮어 쓸 수 있습니다. 예를 들어 urlRoot 속성을 변경하여 모델에 데이터를 가져와야하는 위치를 알려줄 수 있습니다.

백본 모델에는 데이터가 attributes 속성에 포함되어 있습니다. 모델 set을 사용하여 이러한 특성을 변경하면 get 메서드를 사용하여 모델에 저장된 값을 읽을 수 있습니다. 따라서 사용자가 정보를 입력 할 수있는 입력이있는 경우 (예 : 이름과 전자 메일로 새 사용자를 만드는 경우) 두 가지 모두에 대해 텍스트 입력이있는 양식이 있습니다. 이 같은 domething 할 수있는 :

var user = new User; 
user.set('name', $('#name').val()); 
user.set('email', $('#email').val()); 
attributes = { 
    name: user.get('name'), 
    email: user.get('email') 
}; 
user.save(attributes); 

이 더 나은 보이게하기 위해이 코드 요소를 다시하는 방법이 많이 있지만 그것은 당신이 그 방법을 사용할 수있는 방법을 참조하는 데 도움이됩니다. Backbone documentation을 확인하여 작동 방식을 확인해야합니다. 희망이 도움이!

PD : 예를 들어 필자는 속성을 한 번 설정했지만 속성의 해시를 보내 한 번의 호출로 더 많은 값을 설정할 수도 있습니다.

+0

사전이나 동적 키/값 쌍 컬렉션을 정의하는 것처럼 느껴집니다. 언제든지 키를 추가하거나 요소의 값을 변경할 수 있습니다. 내가 맞습니까? –

+0

컬렉션은 정렬 된 모델 집합입니다. 그들은 많은 모델로 작업해야 할 때 도움이됩니다. 이 정보는 실제로 'attributes'속성의 각 모델 내에 저장됩니다. 특정 시간에 원하는 모든 키를 만들고 값을 변경할 수 있습니다. – guzmonne

1

JS의 모델은 기본적으로 CRUD 및 간단한 유효성 검사 기능이있는 데이터 래퍼입니다. 제대로 작동하려면 (ajax)와 함께 작동하는 서버 기능을 만들어야합니다.이 튜토리얼에서는 모두 http://backbonetutorials.com/what-is-a-model/이라고 말합니다. 데이터베이스 대신 응용 프로그램 서버 측에서 모델이 작동합니다.

데이터에 사용자 지정 작업 (추가/편집/제거뿐만 아니라)이있는 경우 데이터를 수동으로 "설정"하고 "onchange"이벤트를 사용하고 필요할 때보기를 새로 고칠 수 있습니다. 특정 필드에만 "onchange"이벤트를 첨부하고보기에서 사용자 정의 기능을 사용하여 각 특수 필드를 처리 할 수도 있습니다 (유효성 검사 또는 표시 용).

사용자 정의 함수가 아닌 초기화 및 기본값 값에서 필드를 정의 할 수 있습니다 (of할 수 있지만 권장하지 않습니다).

"clasical way"를 만들기 위해서는 다른 백본 기능 http://backbonejs.org/#Collection-Underscore-Methods과 Backbone.Collection을 사용해야합니다.

관련 문제