Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 淘汰赛未得到更新_Knockout.js_Jqxwidgets - Fatal编程技术网

Knockout.js 淘汰赛未得到更新

Knockout.js 淘汰赛未得到更新,knockout.js,jqxwidgets,Knockout.js,Jqxwidgets,我在更新可观察的Array时遇到问题。我肯定错过了什么,但我所拥有的是: 我的主视图模型中存储了一个值列表,如下所示: function AppViewModel() { var self = this; self.q1 = ko.observable().extend({ number: true }); self.q2 = ko.observable().extend({ number: tru

我在更新可观察的Array时遇到问题。我肯定错过了什么,但我所拥有的是:

我的主视图模型中存储了一个值列表,如下所示:

function AppViewModel() {
                var self = this;

                self.q1 = ko.observable().extend({ number: true });
                self.q2 = ko.observable().extend({ number: true });
                self.q3 = ko.observable().extend({ number: true });
                self.q4 = ko.observable().extend({ number: true });
                self.q5 = ko.observable().extend({ number: true });
.
.
.
我有一个计算平均值的计算函数列表。我还有一个单独的视图模型,用于使用jqxWidgets创建图表。代码如下:

function ChartModel(scores) {
                var self = this;
                var cat;

                self.scores = ko.observableArray(scores);

                self.scores.push({ cat: "Re", score: vm.reAve() });
                self.scores.push({ cat: "Da", score: vm.daAve() });
                self.scores.push({ cat: "De", score: vm.deAve() });
                self.scores.push({ cat: "Im", score: vm.imAve() });
                self.scores.push({ cat: "Ps", score: vm.psAve() });
                self.scores.push({ cat: "Overall", score: vm.reAve() });

                //alert(self.scores()[0].score);
                self.updateScores = function () {
                    var item = {};

                    item.cat = "Re";
                    item.score = vm.reAve();
                    self.scores.replace(self.scores()[0], item);
                    item.cat = "Da";
                    item.score = vm.daAve();
                    self.scores.replace(self.scores()[1], item);
                    item.cat = "De";
                    item.score = vm.deAve();
                    self.scores.replace(self.scores()[2], item);
                    item.cat = "Im";
                    item.score = vm.imAve();
                    self.scores.replace(self.scores()[3], item);
                    item.cat = "Ps";
                    item.score = vm.psAve();
                    self.scores.replace(self.scores()[4], item);
                    item.cat = "Overall";
                    item.score = vm.basAve();
                    self.scores.replace(self.scores()[5], item);

                };

            }

            var vm = new AppViewModel();
            var cm = new ChartModel(scores);
我在$document的末尾应用绑定。准备好了吗。。。块问题在于,调用updateScores函数时,分数永远不会更新:

<button id="btnLoad" data-bind="click: cm.updateScores">View Chart</button>

mdaVals是保存所有3个值的数组,mdaScore应该是获得的最大值。上面的代码有什么问题吗?

如果希望在数组中某个对象的值发生更改时更新页面上的值,则需要将该对象上的每个值声明为可观察值

self.mdaVals = ko.observableArray([]);

self.mdaVals.push({ number: ko.observable(1), score: ko.observable(20)});

self.mdaVals()[0].number(2);

self.mdaVals()[0].score(10);

您是否尝试过使用数据绑定=单击:更新存储?您不能在视图中引用cm。我已经尝试过了,但我得到了一个未捕获的错误:无法解析绑定。消息:ReferenceError:未定义UpdateStores;ChartModel是AppViewModel的一部分吗?最好设置一个JSFIDLE来显示您的设置并重现您的问题。通过问题注释进行交互式猜测是解决这一问题的最糟糕的方法。我将致力于创建fiddle,这是一段很长的html代码。顺便说一句,ChartModel与AppViewModel是分开的。请尝试将其减少到绝对最小值,这样仍然会重现您的问题。谢谢。实际上,我已经将可观察值传递到数组中。self.mdaScore是可观察的。但主要的问题是我应该去掉括号。
self.mdaVals = ko.observableArray([]);

self.mdaVals.push({ number: ko.observable(1), score: ko.observable(20)});

self.mdaVals()[0].number(2);

self.mdaVals()[0].score(10);