[javascript] Backbone.js에서 모델과 뷰의 양방향 데이터 바인딩 방법
Backbone.js는 JavaScript 기반의 웹 애플리케이션을 개발하기 위한 MVC 프레임워크입니다. 이 프레임워크를 사용하면 모델과 뷰 간의 데이터 바인딩을 간단하게 설정할 수 있습니다. 이번 글에서는 Backbone.js에서 양방향 데이터 바인딩을 구현하는 방법을 알아보겠습니다.
모델과 뷰 생성하기
먼저, Backbone.js에서는 모델과 뷰를 생성해야 합니다. 모델은 데이터의 상태를 저장하고 관리하며, 뷰는 데이터를 보여주고 사용자와의 상호작용을 처리합니다.
var MyModel = Backbone.Model.extend({
defaults: {
name: '',
age: 0
}
});
var MyView = Backbone.View.extend({
el: '#my-view',
events: {
'input #name-input': 'updateName',
'input #age-input': 'updateAge'
},
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$('#name-input').val(this.model.get('name'));
this.$('#age-input').val(this.model.get('age'));
},
updateName: function(event) {
this.model.set('name', event.target.value);
},
updateAge: function(event) {
this.model.set('age', event.target.value);
}
});
var myModel = new MyModel();
var myView = new MyView({ model: myModel });
myView.render();
양방향 데이터 바인딩 구현하기
위의 코드에서는 모델과 뷰를 생성하고 뷰가 모델의 변경 이벤트를 감지하도록 설정하였습니다. 이제 양방향 데이터 바인딩을 구현하기 위해 모델의 변경이 뷰에 반영되도록 업데이트 함수를 작성합니다.
updateName: function(event) {
this.model.set('name', event.target.value);
},
updateAge: function(event) {
this.model.set('age', event.target.value);
}
뷰의 입력 요소의 값이 변경되면 해당 값을 모델에 설정하여 모델의 변경 이벤트가 발생하도록 합니다.
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
this.$('#name-input').val(this.model.get('name'));
this.$('#age-input').val(this.model.get('age'));
}
뷰의 render
함수에서는 모델의 값을 뷰의 입력 요소에 설정하여 변경된 값을 화면에 반영합니다.
마무리
위의 코드를 사용하면 Backbone.js에서 모델과 뷰 간의 양방향 데이터 바인딩을 구현할 수 있습니다. 모델의 값이 변경되면 뷰에 자동으로 반영되며, 뷰의 입력 요소의 값이 변경되면 모델에 자동으로 반영됩니다.
Backbone.js는 이외에도 다양한 기능을 제공하고 있으며, 공식 문서나 온라인 자료를 참고하여 더 깊이있는 이해를 할 수 있습니다.
참고 자료: