我有一个Aurelia应用程序正在使用
Store
管理组件之间的状态。
在我的下拉组件中,我有一个验证(不是框架验证,只是在发生更改时在ViewModel中调用的代码),当值发生更改时,该验证将触发:
<select value.bind="parameter.value"
change.delegate="valueChanged()"
class.bind="isValid ? '' : 'has-error'">
...
</select>
在ViewModel中,验证的工作方式如下:
@bindable() parameter: Parameter;
parameterChanged() {
this.validate();
}
valueChanged() {
this.validate();
}
private validate() {
this.isValid = this.parameter.value != '0';
}
参数模型如下:
export interface Parameter {
value: string;
...
}
这个
Parameter
由父组件传递给此组件,在父组件中,可以更改通过存储管理的状态对象的值。
当调用以下操作以更改
State
对象:
export async function changeValue(state: State, value: string) {
const newState = Object.assign({}, state);
newState.setup.parameter.value = value;
return newState;
}
当状态对象上的参数值更改时,下拉列表在屏幕上会明显更改,但是
parameterChanged()
或
valueChanged()
不要开火。
有人知道这里发生了什么事吗?有什么我能解决的吗?感谢任何帮助。。。