3

メインの ko.observableArray があり、そこから 3 つの計算された監視可能な配列を作成し、3 つの配列を 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

CsrIDノックアウトとして定義すると、 observableUIが自動的に更新されます。これでは、計算を次のように変更する必要があります。

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 に答える