observable - Aurelia 使可绑定行为在对象属性上可观察
问题描述
在 Aurelia 绑定中,如果在组件中我们对属性使用可观察的装饰,并且如果该属性是一个对象,那么我们将订阅该对象的所有属性。
例如:
import { observable } from 'aurelia-framework';
export class Car {
@observable color = {rgb: '', hex: ''};
colorChanged(newValue, oldValue) {
// this will fire whenever the 'color' property changes
}
}
因此,如果其中一个颜色属性发生变化,那么它将触发 colorChanged。但是在自定义元素中,我们有这样的可绑定对象:
import {bindable, bindingMode} from 'aurelia-framework';
export class SecretMessageCustomElement {
@bindable data;
dataChanged () {
// -------
}
}
那么 dataChanged 将不会在其属性更改时被调用。如何解决?
解决方案
@observable 不观察属性
这是一个示例:https ://gist.run/?id=040775f06aba5e955afd362ee60863aa
@observable color = { rgb: '', hex: '' }
colorChanged(val) { }
colorChanged
当 rgb 或 hex 改变时不会改变,只有当整个颜色属性被重新分配时。
推荐阅读
- haskell - Haskell:并行计算和单子的“顺序属性”
- vba - 在 Word VBA 中出现拼写错误时如何解决缓慢问题?
- spring-boot - Spring Boot、Kotlin、Kafka 和关机
- java - 如果我的 JUnit 测试没有它按预期工作,为什么要向我的 JUnit 测试添加 @RunWith 注释?
- r - RStudio 无法正确渲染两列 powerpoint
- python - 在 Python 3.6 中从空格分隔的文本文件创建二维数组
- c - 在 C 中使用 getopt() 进行可变长度参数解析
- java - 在 Mac OS 上安装 Java 的所有位置之间有什么区别?
- java - 在使用 java 中的绑定文件从 IBM MQ 消费数据时获取 NullPointerException
- nginx - 代理传递中的字符串插值