我有一个主要的ko.observableArray,我从它创建了三个计算的可观察数组,并将三个数组绑定到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以使其工作?
谢谢, Aadil。
答案 0 :(得分:3)
如果您将CsrID
定义为observable
,则会自动更新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);