객체 리터럴로 선언된 Knockout 뷰 모델과 함수의 차이점
Knockout.js에서 뷰 모델은 객체 리터럴 또는 함수로 선언될 수 있습니다. 기능. 두 접근 방식 모두 데이터와 논리를 뷰에 노출하는 목적을 제공하지만 고려해야 할 몇 가지 미묘한 차이점이 있습니다.
객체 리터럴 선언:
var viewModel = { firstname: ko.observable("Bob") }; ko.applyBindings(viewModel );
함수 선언:
var viewModel = function() { this.firstname= ko.observable("Bob"); }; ko.applyBindings(new viewModel ());
함수 사용의 장점:
이 값에 대한 직접 액세스:
함수는 생성 중인 인스턴스(this)에 대한 즉각적인 액세스를 제공하여 간결한 계산 속성 및 메서드 정의를 가능하게 합니다.
var ViewModel = function(first, last) { this.full = ko.computed(function() { return this.first() + " " + this.last(); }, this); };
비공개 설정 self를 사용하는 변수:
이것의 적절한 범위 지정에 문제가 발생하면 뷰 모델 인스턴스와 동일한 변수(self)를 설정하고 대신 이를 사용하여 올바른 컨텍스트를 유지할 수 있습니다.
var ViewModel = function() { var self = this; this.items = ko.observableArray(); this.removeItem = function(item) { self.items.remove(item); } };
bind를 사용하여 바인딩:
최신 브라우저의 경우 바인딩 기능을 사용하여 특정 함수가 올바른 this 값으로 호출되도록 할 수 있습니다.
var ViewModel = function() { this.items = ko.observableArray(); this.removeItem = function(item) { this.items.remove(item); }.bind(this); };
사용할 접근 방식을 선택하는 것은 애플리케이션의 특정 요구 사항과 기본 설정에 따라 다릅니다. 함수 선언은 더 큰 유연성과 캡슐화를 제공하는 반면, 개인 변수나 계산된 속성이 필요하지 않은 기본 시나리오에서는 개체 리터럴 선언이 더 간단하고 편리합니다.
위 내용은 ## Knockout.js의 객체 리터럴과 함수: 어떤 뷰 모델 선언이 귀하에게 적합한가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!