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

时间:2018-04-05 07:11:59

标签: knockout.js

将可观察值作为组件参数传递,但接收可观察的组件。

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

在组件中params.uid是可观察的而不是值。

以下显示 false

<h3 data-bind="text: ko.isObservable(data.uid())"></h3>

2 个答案:

答案 0 :(得分:2)

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

  

通常,对于自定义元素,如果参数的评估涉及   评估一个observable,然后Knockout自动构造一个   ko.computed值给出表达式的结果,并提供它   到组件。

因此,您需要在组件模型中展开(ko.unwrap) uid

答案 1 :(得分:0)

data.uid可能是包含另一个可观察对象的可观察对象。 像

这样的东西
var a = ko.observable(1); 
data.uid=ko.observable(a);

您可以尝试打印data.uid()()来检查是否是这样

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

如果第一个打印值,第二个打印出可观察的函数,你知道data.uid是一个包含另一个可观察对象的可观察对象。