【问题标题】:Is there any advantage of keeping a property non observable vs observable in knockout js?在淘汰赛js中保持属性不可观察与可观察有什么好处吗?
【发布时间】:2018-06-14 18:50:23
【问题描述】:

我正在使用 typescript 编写淘汰赛 js。我有一个具有多个属性的类。我有一个“描述”属性,它没有连接到 DOM,但需要在某些鼠标事件(按钮单击)的某些弹出窗口中使用。我可以轻松地访问该属性并显示一个弹出窗口,但是使用“描述”属性作为淘汰可观察与不可观察有什么优点/缺点?

【问题讨论】:

  • 取决于此点击事件的作用以及您在何处使用description。如果您没有在 HTML 中的任何 data-bind 或任何 computed 属性中使用此 description,则无需将其设为 observable。
  • 通过绑定在 HTML 中显示它可以正常工作,无论它是否可观察。不同之处在于,如果它不是可观察的,则它不会在其值更改时自动更新 - 如果重新创建绑定,它将更新(例如,如果元素从 DOM 中删除并由父绑定重新添加) .
  • 谢谢。只是想澄清是否有任何其他优点不使其可观察,例如表现。如是。怎么样?

标签: typescript knockout.js


【解决方案1】:

KO 如何知道您的视图模型的某些部分何时发生变化?

答案:您需要将模型属性声明为可观察对象, 因为这些是可以通知的特殊 JavaScript 对象 订阅者了解更改,并且可以自动检测依赖关系。

如果您想在弹出窗口中显示更新后的描述值,或者想在描述属性发生更改时做一些事情,则必须将其定义为observable。 p>

【讨论】:

    【解决方案2】:

    这完全取决于您的description 属性是静态的还是动态的。如果它不会改变,那么它不应该是可观察的。如果要更改,则需要将更改反映在您的弹出窗口中(以及可能引用它的任何computed 属性)。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 2015-10-05
      • 2014-11-05
      • 2012-09-08
      • 2012-07-07
      • 2015-01-25
      • 2023-03-11
      • 2014-03-18
      相关资源
      最近更新 更多