knockout.js - 在 params 中评估一个 KnockoutJS 可观察数组传递一个计算数组
问题描述
我在组件的params
参数上发生了一件违反直觉的事情,当在 HTML 中评估时,一个observableArray
对象正在作为 a 传递。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
也执行 a 会导致所需的数组。这一切都很好,但我想了解为什么评估会导致计算结果。
解决方案
从文档中:
为了确保子组件能够对表达式值的变化做出反应,Knockout 自动将此参数升级为计算属性。因此,子组件将能够读取 params.observableExpression() 以获取当前值,或者使用 params.observableExpression.subscribe(...) 等。
通常,对于自定义元素,如果参数的评估涉及评估 observable,则Knockout 会自动构造一个 ko.computed 值以给出表达式的结果,并将其提供给组件。
(最后强调我的)
推荐阅读
- android - 监听 AudioManager.RINGER_AUDIO_CHANGES 的变化,然后显示一个对话框
- python - 在python中构建不同大小的字符串列表结构
- javascript - 简单的 Javascript 函数不起作用
- asp.net - 根据边界框查询 SQL Server 地理数据类型
- sockets - WSAIoctl() 中的 IP 地址的顺序是什么?
- sympy - 形状为 (n,) 的 Sympy lambdify 数组
- angular - 将组件方法作为参数传递给类
- forms - Joomla表单验证忽略密码字段
- r - 如何根据R中的条件查找列表的长度
- android - 在 Android Studio 中添加外部库 (.jar)