在组件的params参数中发生了一件违反直觉的事情,在HTML中计算对象时,对象的observableArray作为computedObservable传递。
<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也会产生所需的数组。这一切都很好,但我想了解为什么评估结果在计算结果。
发布于 2019-02-19 14:10:29
来自文档
为了确保子组件能够对表达式值的更改作出反应,Knockout自动将此参数升级为计算属性。因此,子组件将能够读取params.observableExpression()来获取当前值,或者使用params.observableExpression.subscribe(.)等等。 通常,使用自定义元素,如果参数的计算涉及到可观测性,那么Knockout将自动构造一个ko.computed值,以给出表达式的结果,并将其提供给组件。
(最后一颗地雷)
https://stackoverflow.com/questions/54768069
复制相似问题