3

我有一个主要的 ko.observableArray,我从它创建了三个计算的 observable 数组,并将这三个数组绑定到 UI。代码是

self.ActiveVisitsList = ko.observableArray();

self.FVL = ko.computed(function () {
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return o.CsrID == 0;
    });
}, self);

self.MVL = ko.computed(function () {
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return o.CsrID == self.Me().ID;
    });
}, self);

self.OVL = ko.computed(function ()
{
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return (o.CsrID != self.Me().ID && o.CsrID != 0);
    });
}, self);

一段时间后,主 observableArray“ActiveVisitorsList”中的一个对象,其 CsrID 从 0 更改为其他值,但绑定的 UI 不反映。有什么方法可以手动将 UI 与模型或其他东西重新绑定以使其工作?

谢谢,阿迪尔。

4

1 回答 1

3

如果定义CsrIDobservable淘汰赛会自动更新UI。在这种情况下,您必须将计算结果修改为:

self.FVL = ko.computed(function () {
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return o.CsrID() == 0;
    });
}, self);

self.MVL = ko.computed(function () {
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return o.CsrID() == self.Me().ID;
    });
}, self);

self.OVL = ko.computed(function ()
{
    return ko.utils.arrayFilter(self.ActiveVisitsList(), function (o) {
        return (o.CsrID() != self.Me().ID && o.CsrID != 0);
    });
}, self);
于 2012-12-06T14:22:50.303 回答