최근에 녹아웃으로 게임을 시작했으며 문제가 발생했습니다. 나는 모든 종류의 방법으로이를 인터넷 검색을 시도했지만 적용 가능한 결과를 찾지 못했습니다. 내가 관찰 계산 Parameters
와 결합하고있는 HTML에서개체를 다시 설정하지 않고 계산 된 관찰 가능 다시 계산
var model = new function() {
var that = this;
this.parameterRegex = ko.observable(/\@@{1}\w+/ig);
this.query = ko.observable('SELECT @@par1 from @@par2');
this.parameterNames = ko.computed(function() {
var allParameters = that.query().match(that.parameterRegex());
return (allParameters == undefined) ? [] : jQuery.unique(allParameters);
});
this.parameters = ko.computed(function() {
return ko.utils.arrayMap(that.parameterNames(), function (item) {
return {
Name: ko.observable(item),
Example: ko.observable()
}
});
});
};
하지만, 모든 시간이 Query
관찰 변화와 Parameters
관찰 다시 계산, 나는 모든 상태를 잃게 :
의 나는이 모델을 가정 해 봅시다 계산 된 항목.
내가이 의미하는 것은 그 나는 Parameters
와 HTML에서 foreach는 바인딩과 나는 같은 것을 foreach는 몇 가지 입력 상자가있는 경우 : 사용자가 입력에 입력 한 것을
<textarea name="query" class="form-control" data-bind="value: query, valueUpdate:'afterkeydown'" rows="10" style="margin-bottom:20px"></textarea>
<div data-bind="foreach: parameters">
<p data-bind="text: Name"></p>
<input type="text"></input>
</div>
모든 텍스트 Computed Observeable이 다시 계산되면 손실됩니다.
어떻게 해결할 수 있습니까?
가능 그것입니다. 매개 변수 배열이 전혀 변경되지 않습니까? 그것의 변화가 있다면? 텍스트가 변경되는면은 계산 된 함수의 전체 점입니다. 변경하지 않으려면 계산하지 마십시오. –
매개 변수 배열은 문자열'query'에 따라 변경됩니다. 이것은'@@ par1'과'@@ par2'를 포함하는 문자열 배열로 나뉩니다. 문자열'query'에서 텍스트를 변경하자마자, 계산 된 값이 다시 계산됩니다 –
그래서 무엇이 변경 될까요? –