2014-01-22 3 views
1

컨트롤을위한 Canjs 샘플을보고 있습니다. 이 경우Canjs 컨트롤 샘플 이해

TaskStriker = can.Control({ 
    "{task} completed": function(){ 
     this.update(); 
    }, 
    update: function(){ 
     if (this.options.task.completed) { 
      this.element.addClass('strike'); 
     } else { 
      this.element.removeClass('strike'); 
     } 
    } 
}); 
var taskstriker = new TaskStriker({ 
    task: new Task({ completed: 'true' }) 
}); 

작업이 정확히 객체 무엇인가? 나는 can.Construct를 사용하여 작업을 만들려고했지만 값이 변경되면 업데이트 기능을 트리거하지 않습니다.

몇 가지 설명해주세요.

답변

1

두 가지 사항이 두드러집니다 : (1) taskstriker이 초기화되기 전에 작업 개체가 completed으로 설정되어 있습니다. (2) can.Control 또는 그 하위 클래스 중 하나를 인스턴스화하려면 DOM 요소를 첫 번째 인수로 전달하고 options 객체를 두 번째 인수로 전달해야합니다.

+0

이것은 canjs 페이지에 주어진 예입니다. 아래 링크를 참고하십시오. http://canjs.com/docs/can.Control.prototype.on.html –

+1

문서가 올바르지 않습니다. https://github.com/bitovi/canjs.com/issues에서 신고하십시오. 다음은 작동하는 예제입니다. http://jsfiddle.net/air_hadoken/mXzD7/1/ –

+0

하나 더 작은 질문입니다. 이 단계를 수행 할 때 발생합니다. can.Observe.extend ("Task"). 이 객체를 정의하지 않았습니다. 그래서 여기서 어떻게 될까요? 당신도 그걸 설명해 주실 수 있습니까? –