Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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 订阅观测值以更新viewmodel_Knockout.js_Refresh_Viewmodel - Fatal编程技术网

Knockout.js 订阅观测值以更新viewmodel

Knockout.js 订阅观测值以更新viewmodel,knockout.js,refresh,viewmodel,Knockout.js,Refresh,Viewmodel,我得到了可观的部分工作,因为它更新了顶部PAR字符串。 这是我订阅的,所以我想知道这个部分是否错了,因为当我加入一个高尔夫球手时,它有当前所选的球场。(i)我可以在一个球场上有2个高尔夫球手,另一个球场上有3个高尔夫球手,所以当单击按钮被击中时,它所做的唯一事情就是改变下一个高尔夫球手要增加的PAR。< /P> self.site.subscribe(function (newValue) { var len = self.golfers().length; for (var i


我得到了可观的部分工作,因为它更新了顶部PAR字符串。

<>这是我订阅的,所以我想知道这个部分是否错了,因为当我加入一个高尔夫球手时,它有当前所选的球场。(i)我可以在一个球场上有2个高尔夫球手,另一个球场上有3个高尔夫球手,所以当单击按钮被击中时,它所做的唯一事情就是改变下一个高尔夫球手要增加的PAR。< /P>
self.site.subscribe(function (newValue) {
    var len = self.golfers().length;
    for (var i = 0; i < len; i++) {
        self.golfers()[i].par(self.availableCourses()[self.site()].courseP);
    }
});

使用knockout,您可以在视图模型中创建可观察对象来表示UI的状态。然后,如果需要,您可以订阅这些可观察的变化。请看最下面的部分

我设置了一个简单的提琴来演示在可观察对象上使用subscribe函数的基础知识:


这是太多的代码了,很难理解。请把它归结为相关的元素。我不确定我能拿出什么和我不能拿出什么,因为这都是它正常工作所需要的。基本上,我想做的是订阅我的视图模型来检测和更改,然后刷新它。这里有一个例子,我发现它正在做一些我想要的事情,但是使用viewModel作为变量,而不是一个我得到订阅的函数,当它启动时,有方法刷新视图模型吗?我的观测阵列都是彼此独立计算的,当我更改其中一个阵列时,我会尝试让其他阵列也进行更新。当你查看模型更改时,你就是在订阅它。那么,如果它刚刚更改,为什么还要刷新它呢?你想做什么?我知道它有很多代码,但是如果你运行它并点击单选按钮,你可以看到我想做什么。基本上我想在两个有不同PAR的高尔夫球场之间切换。一旦PAR改变,我希望第一个函数调用方高尔夫球手再次运行并更新数据以反映新课程Par。下面是更新后的fiddle@user1515742 KO,每当您更新一个依赖项时,它应该负责自动更新您的依赖观测值。我猜在代码中的某个地方,您试图使用=来设置一个可观察对象,而不是调用它的“setter”函数。也就是说,我怀疑你在做viewModel.observable=value;而不是viewModel.observable(值);我检查了,但找不到,我使用计算函数,将数组的每个元素放入一个变量中,以保持计数直到结束。然后我返回计数,例如我有
this.OUT=ko.computed(函数(){returnaddsides(golfer.holes,0,8);})针对每种分数类型。可能就是这样吗?
self.availableCourses = ko.observableArray([
        { name: ko.observable("Fort Cherry Golf Club"),
            courseP: [ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(5), ko.observable(3), ko.observable(4),
            ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(3), ko.observable(4),
            ko.observable(5), ko.observable(4), ko.observable(3), ko.observable(4), ko.observable(4)]
        },
        { name: ko.observable("Lake View Golf Course"),
            courseP: [ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(3), ko.observable(5), ko.observable(4),
            ko.observable(5), ko.observable(3), ko.observable(4), ko.observable(4), ko.observable(4), ko.observable(3), ko.observable(4),
            ko.observable(5), ko.observable(4), ko.observable(3), ko.observable(4), ko.observable(5)]
        }
            ]);