knockout.js Knockout JS foreach系结会以最后一个索引值覆写值

prdp8dxp  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(212)

我想把数据从可观察数组显示到视图。当我使用foreach绑定时,显示的值全部被最后一个索引值替换,如下面这样:我想显示数据A,B,C,但它显示C,C,C如果数据给出值A,B,那么它显示B,B我不知道是什么问题,因为这是我第一次在使用foreach时遇到这个问题
这是我使用的视图。Foreach部门显示得很好,但coaOperasional和detailOperasional不是。
第一个

abithluo

abithluo1#

您的方法中的一个根本错误是,您试图在视图模型 * 中格式化数据 *,例如格式化财务值或将内容加粗。
千万别这样。
所有的格式化都应该在视图中进行,要么通过CSS,要么通过绑定。创建一个custom binding handler来格式化财务值以供显示,要比像现在这样不断地格式化和取消格式化模型中的数字要容易得多。
其他备注:

  • 基于某种条件(例如parent或否)显示或隐藏某些内容(例如code的某个详细记录)也最好在视图中完成。使用if:ifnot:很容易实现这一点。
  • 我完全不明白你的visible: $parentContext.$index() == 0检查的目的。你这样做的方式,$index * 总是 * 是0,所以这些检查什么也不做。我已经从下面的视图中删除了它们。
  • 保持属性名称的一致性,例如,在视图模型中调用属性codeop是不必要的,也是令人困惑的,而在模型中它实际上被称为code
  • 使viewmodel构造函数只接受一个data参数,而不是3个或更多的独立参数,这对保持代码简洁也有很大帮助。
  • 你不需要jQuery来执行循环。JavaScript自己就可以很好地执行循环。我已经删除了所有的jQuery引用。
  • 在现代的JS中,你不再需要var self = this;,当你在视图模型中使用箭头函数时,this会在方法和帮助函数中保留它的意义。

比较一下当你在你应该做的地方做事情时视图模型和视图变得多么容易(我无法重现你所说的foreach:问题):
第一个

相关问题