viewmodel에서 UI에 대한 계산 된 속성 업데이트를 강제로 업데이트하려고합니다. 그러나 초기 값은 더 이상 값을 얻지 못합니다. 그것이 함수가 아니기 때문에 속성을 변경하는 것은 실패합니다. this.refreshProcessDetails에서 this.processName.valueHasMutated을()()를 호출 할 때트리거 계산 된 속성 업데이트
declare var processViewModel: Process.ProcessViewModel;
window.onload =() => {
processViewModel = new Process.ProcessViewModel();
processViewModel.setBindings();
ko.applyBindings(processViewModel);
}
나는 다음과 같은 오류가 바인딩
사이트
<script src="../../libraries/knockout-3.4.1.js"></script>
<input id="nameInput" data-bind="value: processName" type="text"/>
<input id="nodetotalInput" data-bind="value: processNodeCount" type="text"/>
보기 모델
export class ProcessViewModel {
public processName: KnockoutObservable<string>;
public processNodeCount: KnockoutObservable<number>;
constructor() {
try {
this.testService = new Test.TestService();
this.setBindings();
}
catch (e) {
console.log(e);
}
}
public setBindings(): void {
this.processName = ko.computed<string>(
function() { processViewModel.isLoaded() ? processViewModel.testService.flowModel.process.name : ""; }
);
this.processNodeCount = ko.computed<number>(
function() { processViewModel.isLoaded() ? processViewModel.testModel.nodeCount() : 0; }
);
}
public isLoaded(): boolean {
return this.testService.isLoaded();
}
public refreshProcessDetails() {
try {
let message: string = "IsLoaded" + this.isLoaded();
console.log(message);
/** attempts at triggering an update */
this.processName();
this.processName.valueHasMutated(); // fails because it's not a function
this.processNodeCount();
}
catch (e) {
console.log(e);
}
}
}
;
스택 : "형식 오류가 : this.processName.valueHasMutated이
'TestService'는 구독 할 수있는 이벤트를 제공하지 않습니까? "로드"이벤트를 듣는 것은 녹아웃의 전적으로 이벤트 중심 접근 방식에 훨씬 더 적합합니다. 'refreshProcessDetails'와 같은 폴링 함수를 만들면 이상적인 결과가 발생합니다. – Tomalak