在knockout.js中有没有办法确定
ko.observable
或ko.computed
)以何种方式相互依赖(先例/受抚养人)和
1 这意味着我需要一种方法从HTML节点转到连接的ko.subscribable
,而不仅仅是视图模型,例如ko.dataFor()
。这似乎也是不可能的。
我已经构建了一个类似于电子表格的Web应用程序 - 根据一组业务规则,许多数字值基于彼此。其中一些是计算的,其中一些是用户提供的。
目前我正在使用自己的JS库来完成所有依赖关系跟踪和动态屏幕更新。这有效,但我想将它与knockout.js交换,以增加多功能性和优雅。
Knockout会在某处跟踪此信息。我该如何使用它?
例如,想象一下总结几个整数的电子表格(HTML表格):
| A B C --+--------- 1 | 4 1 5 2 | 2 3 | 3 8
答案 0 :(得分:7)
我写了一个plugin for Knockout(2.0+),其主要目的是消除计算可观察量的重复更新。但是由于插件替换了ko.computed
对象,我还添加了获取可观察对象的依赖项/依赖项列表的功能。每个计算对象都有一个getDependencies
方法,它返回一个observable数组,每个observable / computed observable都有一个getDependents
方法,它返回一个计算的observables数组。
答案 1 :(得分:4)
这是一个非常有趣的问题 - 似乎并不是一个简单的问题。我查看了淘汰源,看起来这些数据存储在_subscriptionsToDependencies
属性中,但似乎没有公开曝光。
我注意到getDependenciesCount
已曝光 - 请查看this fiddle以查看其实际效果。
我还在调查这个问题,但似乎它可能需要一个淘汰赛的分支,除非我们能够得到潜在的观察结果。但到目前为止,我发现了这些内容,您可能会觉得有用:
通过调试器运行它,似乎在运行时,敲除的缩小版本将_subscriptionsToDependencies
属性重命名为V
。在运行时,getDependenciesCount
属性的值为:function (){return v.length}
我希望这会有所帮助。
编辑:对于那些到达这个问题寻找答案的人来说,从版本2.1开始,KnockoutJS似乎不可能