在组件的params
参数中发生了违反直觉的事情,在HTML中进行评估时,observableArray
个对象作为computedObservable
传递。 / p>
<my-component params="myParameter: someObject.myObservableArray()"></my-component>
someObject
由接口定义:
interface MyObjectType {
myObservableArray: KnockoutObservableArray<MyDto>;
}
然后my-component
的参数由另一个接口指定:
interface MyComponentParams {
myParameter: Array<MyDto>;
}
这里没有什么特别令人兴奋的事情,但是将可观察数组传递并在构造函数中对其进行评估可以很好地工作。问题似乎只是params
中的评估。
编辑:在ko.unwrap()
上执行computedObservable
也会得到所需的数组。一切都很好,但是我想理解为什么评估结果完全是经过计算的。
答案 0 :(得分:1)
为确保子组件可以对 表达式值,敲除会自动将此参数升级为 计算属性。因此,子组件将能够读取 params.observableExpression()获取当前值,或使用 params.observableExpression.subscribe(...)等。
通常,对于自定义元素,如果参数的评估涉及 评估可观察物,然后淘汰赛会自动构造一个 ko.computed value 给出表达式的结果,并提供 到组件。
(上一个肺脓肿)