推迟或暂停敲除中的依赖项评估,直到视图模型完全更新(例如使用映射插件)
Defer or pause evaluating dependencies in knockout until viewmodel is completely updated (using for instance the mapping plugin)
我有一个复杂的淘汰视图模型,它是使用映射插件创建的。我还使用映射插件更新了视图模型:
ko.mapping.fromJS(json, viewmodel);
我有几个订阅使用多个视图模型字段来计算结果。映射插件分别更新每个字段,并在每次更改时执行订阅。因为不是所有的值都在同一时间更新,所以计算有时会混合使用不同字段的新旧值,这在我的情况下会引起问题。
有没有办法告诉映射插件或敲除程序等待依赖项的评估,直到我告诉它所有值都已设置?
我最终所做的是在我的视图模型中创建一个可观察的对象,该对象在批更新完成后被赋予一个值。我还定义了一个手动订阅,它在那一刻执行相关代码:
viewmodel.finishedBatchUpdate : ko.observable();
...
ko.mapping.fromJS(json, viewmodel);
viewmodel.finishedBatchUpdate.notifySubscribers(true);
...
viewModel.finishedBatchUpdate.subscribe(function() {
// my code
});
我也可以创建一个pureComputed
,并依赖于这个可观察的,但我不需要在这个pureComputed本身上绑定任何东西。在我看来,手动订阅更干净。
相关文章:
- 视图ngValue-Angular JS中未更新模型的更改
- 需要使用触摸屏从 AngularJS 指令中更新模型
- 角度指令没有更新模型视图
- 复选框仅在第二次单击后更新模型
- Angular.js-Socket.io事件更新模型,而不是视图
- UI Select在删除后不会更新模型
- 为什么ng提交没有提交和更新模型
- AngularJS-基于URL更新模型
- 视图更改时,Ember.js更新模型
- Knockoutjs函数更新模型时应出现异常
- 挖空绑定不会更新模型
- 范围不更新模型中的更改
- 导航时更新模型变量
- 角度.js更新模型
- Ember.js不更新模型
- 在使用挖空自定义绑定时更新模型时更新元素
- 在自我更新时以ng重复更新模型
- 如何在主干中对列表进行排序时更新模型的顺序属性
- AngularJS 复选框不更新模型
- 更新模型中的数据不会绑定到控制器