【问题标题】:What is difference between KnockoutObservable<string[]> and KnockoutObservable<string>[]KnockoutObservable<string[]> 和 KnockoutObservable<string>[] 有什么区别
【发布时间】:2019-02-05 06:04:24
【问题描述】:

KnockoutObservable&lt;string[]&gt; and KnockoutObservable&lt;string&gt;[] 和有什么区别 什么时候使用它们中的任何一个?

【问题讨论】:

    标签: javascript typescript knockout.js knockout-2.0 knockout-3.0


    【解决方案1】:

    当你订阅KnockoutObservable&lt;string[]&gt;时,你会收到一个字符串数组(string[]

    另一个是一个 observables 数组 (KnockoutObservable&lt;string&gt;),每个都解析为一个字符串类型的结果。

    当你想接收字符串数组时,你应该使用KnockoutObservable&lt;string[]&gt;

    【讨论】:

      【解决方案2】:

      如果你想要一个 Observable 数组,你应该使用https://knockoutjs.com/documentation/observableArrays.html

      除非 typescript 外观做了一些意想不到的事情(我不熟悉它),否则一个 Knockout Observables 数组或类型数组的 Knockout Observable 都可能不正确。

      但要回答您的问题,它们将有非常不同的性能开销和不同的用途。

      一个普通的 KnockoutObservable 类型的数组,只有在整个数组被替换时才会更新。当数组发生突变时你不会收到通知,我想不出任何使用它的理由,除了可能是一些真正的数据繁重的操作,你正在接收数组信息流。

      但是,一组 KnockOut Observables 会带来非常沉重的性能开销。

      您正在为每个元素创建一个 KnockoutObservable 。这些元素中的每一个都是一个单独的 Knockout Observable,可以相互独立地收听。与其拥有要绑定的属性名称,不如拥有一个数组和键/索引。

      在 99% 的情况下,您可能正在寻找不同的 ObservableArray。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 2016-11-09
        • 2021-12-21
        • 2012-05-21
        • 2011-10-25
        相关资源
        最近更新 更多