挖空JS模板使UI在编辑时“闪现”
Knockout JS Templates makes the UI "flash" when edited
我在使用Knockout JS时遇到了一个大问题。在我的视图模型中,我有一个名为 Method(方法)的字段,它实际上是另一个视图模型。
此视图模型可以是三种不同事物之一(它映射到域模型中的多态对象)。为了解决这个问题,我使用模板来检查在域模型中选择了哪种类型的方法,然后显示绑定该类型数据的模板。
检查方法类型的函数如下所示:
this.getTemplate = function (data) {
var method = data.original.get_Method();
if (method instanceof MyProj.MethodA)
return "methodA";
else if (method instanceof MyProj.MethodB)
return "methodB";
else if (method instanceof MyProj.MethodC)
return "methodC";
}
我绑定模板的标记如下所示:
<div data-bind="template: {name: getTemplate($data), data: $data.Method}"></div>
这实际上效果非常好,当我通过 UI 中的下拉列表更改方法类型时,域模型会更新并显示正确的模板。然而,我的问题来了。每个模板都包含特定于每种方法类型的多个不同字段。每当我更改其中一个模板显示的视图模型中的值之一时,UI 都会闪烁,我认为这是因为模板再次被选中。这很烦人,看起来非常糟糕。
关于如何解决这个问题的任何想法?任何帮助将不胜感激!
提前致谢
/比约恩
您是否在getTemplate函数中使用了任何可观察的内容。更新该可观察量的值会使模板重新渲染,并获得闪光效果。
查看此链接部分:"注5:动态选择使用的模板"。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- 高亮显示时编辑文本大小和颜色
- 剑道UI内联编辑:如何在点击其他按钮时隐藏按钮
- 将事件聚焦/模糊在可编辑内容的元素上
- 编辑HTML表的源数据
- ExtJS网格单元格编辑器,防止焦点松动问题
- 如何在visualstudio中调试web api时编辑javascript文件
- 具有所有样式的文本正在复制到可编辑文本区域
- 可以't使用PHP使用Froala编辑器上传图像URL
- 用Greasemonkey编辑专栏
- 如何在corona sdk中从CK编辑器中检索数据
- 基于数据类型的编辑框的汇总列表
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 错误:[$compile:nonassign]表达式'未定义'与指令'内容可编辑'是不可
- 如何在ng-reeat中使用ng-switch来编辑JSON API数据
- 如何获取经过编辑的文本
- 文本编辑后,append函数不适用于文本区域
- Eclipse编辑器中无法访问的代码
- 挖空JS模板使UI在编辑时“闪现”