代码之家  ›  专栏  ›  技术社区  ›  Amit Bhagat Kunal Valecha

组件参数中可观察的通过值

  •  1
  • Amit Bhagat Kunal Valecha  · 技术社区  · 6 年前

    传递一个可观测值作为组件参数,但组件接收可观测值。

    <my-component params="uid: data.uid()"></my-component>
    

    In组件 params.uid 是可观察的而不是价值。

    以下显示 错误的

    <h3 data-bind="text: ko.isObservable(data.uid())"></h3>
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Amit Bhagat Kunal Valecha    6 年前

    作为 documentation states ,如果在自定义元素(组件)中传递一个可观察表达式,那么它将自动构造为 computed

    通常,对于自定义元素,如果参数计算涉及 评估一个可观察的,然后剔除自动构造一个 击倒取胜计算值以给出表达式结果,并提供 到组件。

    所以,你需要打开包装 (ko.unwrap) 这个 uid 在组件的模型中。

        2
  •  0
  •   A Nice Guy    6 年前

    可能是这样 data.uid 是一个可观察对象,包含另一个可观察对象。 类似于

    var a = ko.observable(1); 
    data.uid=ko.observable(a);
    

    您可以尝试打印数据。uid()()检查是否是这样

    console.log(data.uid()());
    console.log(data.uid());
    

    如果第一个打印出值,第二个打印出敲除可观察函数,那么您知道 数据uid 是一个可观察对象,包含另一个可观察对象。