Javascript 计算的Knockoutjs未从ObservalArray更新
我希望在更新可观测数组时更新计算数组。数组中填充了问题和答案(是或否)。当用户更改问题的答案时,我希望某个区域可见或不可见 因此,如果回答了一个问题,那么计算出的Javascript 计算的Knockoutjs未从ObservalArray更新,javascript,knockout.js,Javascript,Knockout.js,我希望在更新可观测数组时更新计算数组。数组中填充了问题和答案(是或否)。当用户更改问题的答案时,我希望某个区域可见或不可见 因此,如果回答了一个问题,那么计算出的is5B应该是真的“oui”,这应该使部分可见 is5B computed仅在初始化时计算,在更新数组时不触发(它已更新,我用断点检查) 以下是视图模型: var section5Model = ko.validatedObservable({ Questions5A: ko.observableArray(GetQuestio
is5B
应该是真的“oui”
,这应该使部分可见
is5B computed仅在初始化时计算,在更新数组时不触发(它已更新,我用断点检查)
以下是视图模型:
var section5Model = ko.validatedObservable({
Questions5A: ko.observableArray(GetQuestions('5A')),
Questions5B: ko.observableArray(),
Questions5C: ko.observableArray(),
ContactAQ: ko.observable(),
Date: ko.observable(''),
Heure: ko.observable(''),
CategorisePar: ko.observable(''),
DateCategorise: ko.observable(''),
RepOuiNon: [{ label: 'Oui', value: 0 }, { label: 'Non', value: 1 }]
});
section5Model().is5B = ko.computed(function () {
this.Questions5A().forEach(function (item) {
if (item.reponse == 'Oui') {
return true;
}
});
}, section5Model());
以下是标记:
这是一个很好的条件
这是我的不满
您遇到的问题是,项响应不可见。所以如果它改变了,KnockoutJS不知道。要解决这个问题,你必须将其更改为可观察
section5Model().is5B = ko.computed(function () {
this.Questions5A().forEach(function (item) {
if (item.reponse() == 'Oui') {
return true;
}
});
}, section5Model());
Computed是依赖于一个或多个其他可观测值的函数,当这些依赖项中的任何一个发生变化时,它们将自动更新。所以在你的例子中,在你的计算函数中没有可观测的。所以,至少要在侧面计算一个变量作为可观察变量。在您的情况下,请将项作为可观察的响应。为此,您需要在GetQuestions('5A')
请按要求回答问题
var section5Model = ko.validatedObservable({
Questions5A: ko.observableArray([
{reponse : ko.observable('reponse 1 ') },
{reponse : ko.observable('reponse 2') },
/* other objects */
]),
/* other code */
顺便说一下,视图中有很多重复项。考虑使用。谢谢,这是答案的一部分,而“祝福者”的答案完成了解决方案!谢谢,这和Slawomir的答案完成了解决方案!