[marionette.js] serializeData vs templateHelpers
view에서 model 값을 가져오는데 사용되는 메소드로는
serializeData()와 templateHelpers()가 있다.
이 둘의 차이점을 확인해보자.
serializeData()
이 메소드는 보통 model이나 collection 데이터를
template에서 사용할 수 있는 형태로 변환할 때 사용된다.
serializeData는 기본적으로 단순히 model의 속성 값을 복사해준다.
var _ = require('underscore');
var Mn = require('backbone.marionette');
var myModel = new MyModel({foo: 'bar'});
var MyView = Mn.View.extend({
template: _.template('<h1>Hello, <%- foo %></h1>'),
serializeData: function() {
return this.model.toJSON(); // model 값을 json 형태로 변환
}
});
var myView = new MyView();
myView.render();
templateHelpers()
model 혹은 collection 자체의 값 이외에
커스텀하게 변환된 값 추가가 필요한 경우 사용한다.
serializeData()에서 반환된 json 타입의 데이터를 사용하여
모델에 포함되어 있지 않지만 템플릿에서
필요한 데이터가 있는 경우 사용하게 된다.
리터럴한 방법 혹은 함수를 사용해서 추가적으로 데이터를 만들어낸다.
var _ = require('underscore');
var Mn = require('backbone.marionette');
var MyView = Mn.View.extend({
template: _.template('<h1>Hello, <%- contextKey %></h1>'),
templateContext: {
return {
contextKey: this.getOption('contextKey') // model 값 이외의 값을 template 렌더 시 필요한 추가
}
}
});
var myView = new MyView();
myView.render();