Backone.js 프로그래밍
June 3, 2015
3장. Backbone의 기본
Model
toJSON()
은 Model의 attributes를 복사하여 반환한다. 하지만 이름과는 다르게 JSON 문자열로 반환하지는 않는다.
validate()
메서드는 검증에 사용한다. 이 함수는 set()
함수를 실행할 때 {validate: true}
를 함께 넘겨주면 된다. 만약 필요한 값이 없으면 모델 내에서 invalid
이벤트를 발생시킨다.
- 모델 변경 시 change 이벤트가 발생한다. 특정 키를 감시하고 싶으면
change:key
이벤트를 감시하고 있으면 된다.
View
- el은 리플로우, 리페인팅을 줄이기 위해서 뷰에서 가지고 있는 속성이다.
render()
함수에서 return this
를 하는 이유는 랜더링이 필요없는 요소의 목록을 만들거나 전체 목록이 이입된 후에 실제 DOM에 붙일 수 있도록 만들기 위해서다.
this.model.bind('change', _.bind(this.render, this));
모델이 변경되었을 때 실행할 함수를 View에서 정의할 수 있다.
Collection
- 모델의 추가는
add()
, 모델의 삭제는 remove()
를 이용하면 된다.
add()
함수에 {merge: ture}
를 함께 넘길 수 있다. 이 옵션은 중복된 모델이 있을 경우 덮어쓴다.
- 컬렉션의 Getter는 모델을 조회할 때도 이용할 수 있다.
get(id or cid)
라고 함수를 실행하면 해당 id or cid에 해당하는 모델을 반환한다. 모델을 정의할 때 idAttribute
를 다른 것(eg. userId)으로 설정할 수도 있다.
- 컬렉션에도 모델의 변경을 감시할 수 있다. 모델과 마찬가지로
change:key
이벤트가 발생된다.
set()
함수는 컬렉션 재설정할 때 유용하며 add, remove, change 이벤트를 발생시킨다.
reset()
함수도 컬렉션을 재설정 할 때 사용하며 reset 이벤트가 발생된다.
update()
함수는 set()
과 비슷한 것 같은데 차이를 모르겠다. 나중에 봐야지
Event
- 백본에서는 콜론을 사용하여 네임스페이스를 추가한 이벤트 이름을 사용하길 권고한다. (eg. dance:tap, dance:break)
- all은 모든 이벤트를 감시한다. (eg.
.on('all', function () {})
)
off()
함수는 콜백함수의 이름을 전달하여 특정 콜백이 실행되는 것을 막을 수 있는 기능이 있다.
trigger()
함수는 콜백함수에 arguments
를 전달한다.
trigger()
함수는 다수의 이벤트에 다수의 인자를 전달 할 수 있다.
listenTo()
함수는 타 객체의 이벤트 리스닝을 가능하게 하는 녀석이다.
- 고스트 뷰는 가비지 컬렉터가 뷰를 제거하지 않아서 발생한다. 이 경우 메모리 누수가 발생한다.
remove()
함수나 stopListening()
은 이를 해결할 수 있다.
Router
Backbone.history
{trigger: true}
옵션은 라우트 경로를 트리거하여 다른 함수가 실행되도록 만든다. (책에 예제 있다)
- route 이벤트는 Backbone.history 뿐만 아니라 라우터 상에서도 트리거 될 수 있다.
Backbone Sync API
Comments