[javascript] Knockout.js에서 양방향 데이터 바인딩을 구현하는 방법은?

양방향 데이터 바인딩이란 사용자 인터페이스와 모델 데이터 사이에 일어나는 상호작용을 의미합니다. Knockout.js는 이러한 양방향 데이터 바인딩을 쉽게 구현할 수 있는 기능을 제공합니다.

1. Observable 객체 사용하기

Knockout.js에서 양방향 데이터 바인딩을 구현하기 위해서는 Observable 객체를 사용해야 합니다. Observable 객체는 자동으로 데이터 변경을 감지하고 UI에 반영하는 역할을 합니다.

var ViewModel = function() {
  this.name = ko.observable('');
  this.age = ko.observable(0);
};

var viewModel = new ViewModel();
ko.applyBindings(viewModel);

위의 예제에서 nameage는 각각 문자열과 숫자를 저장하는 Observable 객체입니다. 이러한 Observable 객체를 ViewModel에 정의하고, ko.applyBindings() 함수를 호출하여 ViewModel과 HTML 요소를 바인딩합니다.

2. 데이터 바인딩 구문 사용하기

Knockout.js는 데이터 바인딩을 위한 구문을 제공합니다. 이 구문을 사용하여 HTML 요소와 ViewModel의 프로퍼티를 연결할 수 있습니다.

<input type="text" data-bind="value: name" />
<p>이름: <span data-bind="text: name"></span></p>

<input type="number" data-bind="value: age" />
<p>나이: <span data-bind="text: age"></span></p>

위의 예제에서 data-bind 속성을 사용하여 HTML 요소와 ViewModel의 프로퍼티를 연결하고 있습니다. value 바인딩은 입력 요소와 Observable 객체를 양방향으로 연결하며, text 바인딩은 Observable 객체의 값을 HTML 요소에 표시합니다.

3. 실시간으로 데이터 변경을 감지하기

Knockout.js는 Observable 객체를 사용하여 데이터 변경을 실시간으로 감지할 수 있습니다. 이를 활용하여 화면에 표시되는 데이터를 사용자가 입력하는 동안 실시간으로 업데이트할 수 있습니다.

var ViewModel = function() {
  this.name = ko.observable('');
  
  this.updateName = function(data, event) {
    this.name(event.target.value);
  };
};

var viewModel = new ViewModel();
ko.applyBindings(viewModel);

위의 예제에서 updateName 함수를 사용하여 사용자의 입력을 감지하고, 해당 입력 값을 Observable 객체에 반영합니다. 이를 통해 입력 값의 변경을 실시간으로 화면에 반영할 수 있습니다.

결론

Knockout.js를 사용하면 양방향 데이터 바인딩을 쉽게 구현할 수 있습니다. Observable 객체와 데이터 바인딩 구문을 통해 UI와 모델 데이터 간의 실시간 상호작용을 구현할 수 있으며, 사용자 인터페이스를 효율적으로 제어할 수 있습니다.

참고 자료