구독을 일시 중지해야하는 경우 일시 중지 가능 컴퓨터 (아이디어는 this site에서 가져옴)로 계산 된 관찰 가능 항목에서 일시 중지 할 수있는 방법을 발견했습니다. 나는 그것을 일시 중지 할 수있는 기능을 추가하고 쓰기위한 능력을 추가하기 위해 약간 수정했다. 일시 중지에 대한
viewModel.myComputedObservable = ko.pauseableComputed(function() {
return myResult;
}, viewModel);
, 당신은
myComputedObservable.pause();
전화, 모든 수정을 한 후 계산 된 관찰에 구독을 실행하는 데 그 수정에 대한
myComputedObservable.resume();
를 호출합니다.
//wrapper for a computed observable that can pause its subscriptions
ko.pauseableComputed = function (evaluatorFunction, evaluatorFunctionTarget) {
var _cachedValue = "";
var _isPaused = ko.observable(false);
//the computed observable that we will return
var result;
if (evaluatorFunction.read) {
result = ko.computed({
read: function() {
if (!_isPaused()) {
//call the actual function that was passed in
return evaluatorFunction.read.call(evaluatorFunctionTarget);
}
return _cachedValue;
},
write: function(value) {
if (!_isPaused()) {
//call the actual function that was passed in
return evaluatorFunction.write.call(evaluatorFunctionTarget, value);
}
return _cachedValue;
}
}, evaluatorFunctionTarget);
} else {
result = ko.computed(function() {
if (!_isPaused()) {
//call the actual function that was passed in
return evaluatorFunction.call(evaluatorFunctionTarget);
}
return _cachedValue;
}, evaluatorFunctionTarget);
}
넵! 그게 좋은 제안입니다 !! 나는 그것을 시도하고 대답으로 표시하면 일단 내 코드에서 그것을 체크 !! –
이것이 최선의 방법이라고 생각했습니다. 감사! – CoderDennis