淘汰赛-添加了可观察到的未在新对象上更新的功能

鲍勃·特威

出于UI的目的,当我加载数组时,我的viewModel是基于的,我会基于其他一些属性向每个对象添加一个新属性:

    item.forEach(function (party) {
        if (party.AcknowledgementDate() === null) {
            party.Agreed = ko.observable(false);
        }
        else {
            party.Agreed = ko.observable(true);
        }
        vm.Parties.push(party);
    });

页面启动时,“ Parties”定义为ko.observableArray。

此数组中的项目在单独的UI窗口中进行编辑。保存这些更改并关闭窗口后,我调用此函数来更新这些值:

function updateAgreed() {
    vm.Parties().forEach(function (i) {
        if (i.AcknowledgementDate() === null) {
            i.Agreed(false);
        }
        else {
            i.Agreed(true);
        }
    });
}

一切都很好,让我感到非常高兴。当用户创建新的派对项目时,问题就来了。我们也使用Breeze,因此我们转到数据服务,该服务要求实体框架创建适当类型的新对象,然后添加一个可观察对象:

 var lp = manager.createEntity('Party_dto'. { [an array of initial values] });
 lp.Agreed = ko.observable('');
 return lp;

多亏了Breeze,这将自身添加到了缔约方的observableArray中,因为它与同一个父对象有关。然后,我可以再次调用updateAgreed,以适当的值填充可观察的Agreed。

从逻辑上讲,这项工作是按预期进行的-您可以逐步执行此过程,并观看将添加的新项目的“商定”观察值与预期值一起填充的情况。问题出在UI中-不会随着更改而更新。但是,对已经加载的对象运行相同的代码确实会导致UI更新。

我为此感到难过。我无法在Fiddle中复制它,因为我们是在Breeze中创建对象的,而不是即时创建的-并且在没有Breeze的情况下制作模拟版本的效果很好。为什么我的可观察对象在已加载的对象上更新,而同一可观察对象却不在新对象上更新?

PW Kad

我认为有几件事需要解决。第一,因为您正在使用Breeze,所以请充分利用模型构造函数和初始化程序。无论在何处定义模型的属性,请添加以下代码-

metadataStore.registerEntityTypeCtor(
    'Party', null, partyinitializer);

function partyinitializer(party) {
    party.Agreed = ko.observable(false);
}

现在,您所有的聚会实体都具有您可以访问的约定的属性。接下来,请确保您未在​​createEntity方法中设置Party的父导航属性,因为这会破坏您的绑定。

var lp = manager.createEntity('Party'. { [an array of initial values] });
lp.parentParty(something); // Set the parent here
return lp;

这将确保在将聚会绑定回父对象并显示在视图中之前,将设置所有属性。然后,当您设置导航属性时,它会在您的视图中全部显示为快乐。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

淘汰赛-添加了可观察到的不更新新对象的功能

来自分类Dev

可观察到淘汰赛更新

来自分类Dev

功能清单的淘汰赛

来自分类Dev

淘汰赛计算可观察到的参数

来自分类Dev

淘汰赛可观察到的表演

来自分类Dev

淘汰赛移除率从可观察到的限制

来自分类Dev

淘汰赛可观察到的最新价值

来自分类Dev

淘汰赛:链接可观察的数组

来自分类Dev

淘汰赛:更改可观察值

来自分类Dev

淘汰赛简单对象映射

来自分类Dev

淘汰赛:对象和foreach

来自分类Dev

淘汰赛JS对象原型问题

来自分类Dev

淘汰赛:更新observableArray中的项目

来自分类Dev

淘汰赛js绑定未更新

来自分类Dev

淘汰赛未发送更新的值

来自分类Dev

淘汰赛observableArray不更新UI

来自分类Dev

淘汰赛js绑定未更新

来自分类Dev

淘汰赛JS无法更新observableArray

来自分类Dev

淘汰赛显示未更新

来自分类Dev

在淘汰赛中更新 ViewModel

来自分类Dev

在MVC上淘汰赛JS

来自分类Dev

淘汰赛无法观察到样式属性

来自分类Dev

淘汰赛可观察到的数组,更改事件获得更新的项目值

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

可观察到淘汰赛-为什么此值会自动更新?

来自分类Dev

选择的下拉值更改时,可观察到的淘汰赛未更新

来自分类Dev

淘汰赛订阅可观察的复杂对象的任何更改

来自分类Dev

带有字符的淘汰赛追加可观察对象

来自分类Dev

淘汰赛可观察的订阅多次触发