2012-12-11 2 views
0

입니다. 백본 홈 사이트에서 작은 코드를 가져 와서이 예제에서 sidebar.on ('change : color') 함수를 사용하여 함수를 사용했습니다. 하지만 두 개의 매개 변수가 필요합니다. 하나는 '색'이고, 우리는 함수 안에 요소를 정의해야합니다. 왜 여기에 다른 매개 변수를 '모델'로 사용하는지, 그 매개 변수는 무엇입니까?백본에서 "왜 모델이 만들어 졌는가?", 어떻게 사용합니까? - 아래 코드는

내가 그 매개 변수를 제거하면 색만 보내면 기능이 전혀 작동하지 않습니다 ... 어느 누구도 이것을 이해하는 데 도움이됩니까? 여기

샘플 기능 :

d 
_callbacks: Object 
_changing: false 
_escapedAttributes: Object 
_pending: Object 
_previousAttributes: Object 
_silent: Object 
attributes: Object 
changed: Object 
cid: "c1" 
__proto__: x 

답변

1

당신이 영향을받은 어떤 모델을 알고 싶은 것이 가능하다.

대신 컬렉션에서 이벤트를 듣는 경우를 생각해보십시오. 어떤 모델의 색상 값이 수정 되었습니까? model 매개 변수는 이것을 알려줍니다.

또한 동일한 핸들러가 여러 모델에서 "change : color"를 듣는 경우를 생각해보십시오. 다시 한 번, 이벤트를 보낸 모델을 알고 싶을 수 있습니다.

다른 이벤트 중심 환경과 마찬가지로 "보낸 사람"은 항상 이벤트 데이터와 함께 전달됩니다. model은이 경우 발신자입니다.

1

백본은 자바 스크립트 MVC 프레임 워크 : 나는이있어 모델을 콘솔

var Sidebar = Backbone.Model.extend({ 
    promptColor : function(){ 
    var cssColor = prompt('Please enter a css color'); 
     this.set({color:cssColor});  
    } 
}); 

window.sidebar = new Sidebar; 

sidebar.on('change:color',function(model,color){ // what model parameter do here? 
    console.log(model); 
    $('#sidebar').css({ 
     background:color 
    }) 
}) 

sidebar.set({color:'green'}); 
sidebar.promptColor(); 

. (표준 MVC와는 달리 Backbone에는 컨트롤러가 없으며 컬렉션이 있습니다.

받는 모델은 MVC 패러다임의 표준 모델입니다. 모델은 사용자가 작업하고있는 데이터를 보유하는 기본 데이터 구조입니다.

사이드 바 모델에 이벤트 처리기를 부착하는 당신이

sidebar.on('change:color', function(model, color) { 
    // some code here 
}); 

을 수행 할 때. 특히이 모델의 color 특성이 변경되면 해당 함수를 호출한다고 말합니다. 이 이벤트는 이후 시점에 트리거 될 수 있기 때문에 Backbone은 이벤트 핸들러 함수에 두 개의 인수를 전달합니다. 첫 번째는 이벤트가 시작된 모델이고 두 번째는 변경된 속성입니다.

인수는 특정 순서대로 전달됩니다. 즉, model이 첫 번째 인수이고 변경된 특성이 두 번째 인수입니다. 따라서 이벤트 처리기 함수에서 model 인수를 생략하면 전달 된 모델이 color에 할당되고 색상이 모든 인수에 할당되지 않습니다.

추천 도서 :

More about MVC and models
More about backbone models