【发布时间】:2015-08-25 14:16:05
【问题描述】:
在我们当前的项目中使用knockout.js,我们已经多次达到这一点。
我如何确保只有在页面上的所有绑定都已被 Knockout 应用后才执行某些 Javascript 代码?
在我的特定用例中,我使用if-bindings 来评估一些配置选项并决定是否应该渲染内部的元素(= 在 DOM 中)。只有在评估了这些if-bindings 之后,我才需要计算某个元素内的 DOM 节点的数量。显然,如果我计算得太早,if-bindings 还没有删除那些不需要的 DOM 节点,所以计算结果是错误的。
【问题讨论】:
-
可能是用于根绑定的 afterRender 回调 (stackoverflow.com/questions/9306177/…) 对您有帮助吗?
-
如果在 ko.applyBindings 上可用 - 是的。但它似乎只适用于某些特定的绑定。在正确应用所有适用的绑定后,我需要一个钩子,包括所有组件、子组件等。就像没有异步调用未完成并且页面“完成”和“准备就绪”时的状态一样。
-
唯一出现在我脑海中的东西——你可以用包装模板绑定来包装你想要处理的绑定——就像在jsfiddle.net/Le3bw37p小提琴中一样——函数'ar'将在模板绑定内容将被渲染
-
您可能应该包括对您的情况的实际复制。没有它,问题就轻松解决了:在
applyBindings... -
@Jeroen 这不是一个特定的代码问题,而是每个 Knockout 开发人员在大型项目中应用 Knockout 时迟早会遇到的问题。因此,将其视为一个通用问题,如何使用 Knockout.js 解决某个问题。