将可观察值作为组件参数传递,但接收可观察的组件。
<my-component params="uid: data.uid()"></my-component>
在组件中params.uid
是可观察的而不是值。
以下显示 false
<h3 data-bind="text: ko.isObservable(data.uid())"></h3>
答案 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
是一个包含另一个可观察对象的可观察对象。