【问题标题】:is ko.applyBindings synchronous or asynchronous?ko.applyBindings 是同步的还是异步的?
【发布时间】:2012-12-30 23:04:04
【问题描述】:

在您调用ko.applyBindings() 之后生成的视图是否立即存在,或者脚手架是否异步发生?

谢谢!

【问题讨论】:

    标签: knockout.js knockout-2.0


    【解决方案1】:

    ko.applyBindings 是同步调用。

    在某些情况下,绑定有特殊代码在 setTimeout 中执行操作,但通常情况并非如此。

    通过在Knockout 3.2 中添加components,组件是异步的。在 Knockout 3.3 中,如果加载了视图模型/模板,则可以选择同步渲染组件。

    【讨论】:

    • Ryan,既然组件已在 3.2 中发布,我们能否获得有关此答案的更新?如果模块尚未加载,我假设它不是同步的,但是,如果所有依赖项都已加载,它是否是同步的?谢谢大佬!
    • ko.applyBindings 本身是同步的。组件是异步的。在 KO 3.3 中,如果加载了视图模型/模板,将会有一个渲染组件同步的选项。
    • 非常感谢 Ryan 的澄清!
    【解决方案2】:

    淘汰赛是同步的。不仅是 RP Niemeyer 已经说过的 ko.applyBindings 功能。当您为绑定到视图的可观察属性设置值时,您可以 100% 确定执行后

    myViewModel.myObservableProperty(newValue);
    

    您的视图已更新。 事实上,一个可观察属性是一个函数,当你为你的可观察属性设置一个新值时,你只是用新值作为参数调用一个函数:这个函数在它的主体中将同步触发“更改”事件(我不不知道确切的事件名称)。

    希望对您有所帮助.. 抱歉,我的英语有点生疏了。

    【讨论】:

      猜你喜欢
      • 2020-05-15
      • 2020-02-21
      • 2013-02-25
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 2017-06-22
      • 1970-01-01
      相关资源
      最近更新 更多