맵핑 플러그인을 사용하여 수동 또는 자동으로 뷰 모델을 정의한 경우 나중에 프로토 타입을 사용하여 뷰 모델을 "확장"(속성/기능 추가)에 문제가 있습니까?프로토 타입이있는 녹아웃 뷰 모델 확장
매핑 플러그인의 콜백을 알고 있습니다. 대신 프로토 타입을 사용한다는 의미가 있는지 알고 싶습니다. 내가 부탁하는 이유는 서버 측 코드에서 뷰 모델의 많은 부분을 생성하기 때문입니다. 그러나 때로 초기 모델보다 뷰 모델을 나중에 확장해야합니다.
맵핑 플러그인을 사용하여 수동 또는 자동으로 뷰 모델을 정의한 경우 나중에 프로토 타입을 사용하여 뷰 모델을 "확장"(속성/기능 추가)에 문제가 있습니까?프로토 타입이있는 녹아웃 뷰 모델 확장
매핑 플러그인의 콜백을 알고 있습니다. 대신 프로토 타입을 사용한다는 의미가 있는지 알고 싶습니다. 내가 부탁하는 이유는 서버 측 코드에서 뷰 모델의 많은 부분을 생성하기 때문입니다. 그러나 때로 초기 모델보다 뷰 모델을 나중에 확장해야합니다.
나는 이것에 문제가 있다고 생각하지 않는다. 필자는 대응하는 구조화 된 JSON에서 매핑 플러그인을 통해 인스턴스화 된 큰 딥 뷰 모델 그래프로 작업하고, 프로토 타입을 사용하여 유용한 속성 및 toJSON을 가진 "AbstractViewModel" 다른 것보다 우선합니다.
아무런 문제가 없습니다. viewModel의 특정 필드에 데이터가없는 경우보기가 적절하게 응답하는지 확인하십시오.
이 문제를 해결하는 데는 몇 가지 방법이 있습니다. ( 을 : 당신은 녹아웃 및 관찰 개체 자체를 통해 호출 할 익스텐더를 추가 할 수
ko.utils.extend(ViewModelClass.prototype, {
newPrototype1: function() { ... },
newPrototype2: function() { ... }
}
을 또는 :
하나를 들어, 단일 개체보기 모델을 취할 수 및 프로토 타입을 통해 그들을 utils.extend http://knockoutjs.com/documentation/extenders.html)
ko.extenders.numeric = function(target, precision) {
...details in link above...
}
...
self.NumericProperty = ko.observable(data).extend({ numeric: 0 });
...
또는 관찰, observableArray 계산 ... (http://knockoutjs.com/documentations/fn.html)
,617의 모든 인스턴스에 사용할 수있는 함수를 만들ko.observable.fn.filterByProperty = function(propName, matchValue) {
return ko.computed(function() {
...details in link above...
}, this);
}
나는 이러한 조합을 사용하는 경향이 있습니다. 나는 VM 및 매핑에서 별도의 파일에보기 모델의 프로토 타입을 확장 좋아, 그래서
이 '답변'사이의 시간대는 다소 크기 때문에 일부 사항은 변경되었지만 일부 항목은 동일하게 유지됩니다.
실제로 프로토 타입을 통해 함수를 추가하는 것이 좋습니다. – Tyrsius