我在html中使用以下代码段
value.two-way="lstName.IsBlocked ? 'Blocked' : Value2 + ' %'"
在控制台上它显示错误为
未捕获错误:绑定表达式
"lstName.IsBlocked?'Blocked':Value2+' %'" cannot be assigned to.
at b.a.assign (aurelia.js?v=1.0009:59)
at a.updateSource (aurelia.js?v=1.0009:61)
at a.call (aurelia.js?v=1.0009:61)
at a.v [as callSubscribers] (aurelia.js?v=1.0009:58)
at a.notify (aurelia.js?v=1.0009:60) `
这可能是什么原因? 提前谢谢!
答案 0 :(得分:1)
由于您正在使用two-way
绑定,因此绑定表达式需要是可分配的。
如错误所示:"lstName.IsBlocked?'Blocked':Value2+' %'" cannot be assigned to.
。如果绑定属性从视图更改,则必须能够写回表达式并更新视图模型中的源值。你不能真正写入内联if。
将two-way
更改为to-view
,它应该有效。
由于需要表达式是可写的,您可以使用ValueConverter来解决问题(假设您要写入Value2
):
export class BlockedValueConverter {
toView(value, isBlocked) {
return isBlocked ? 'Blocked' : value + ' %';
}
fromView(value) {
return value;
}
}
然后在你的html中(不要忘记require
valueConverter或使用globalResources
):
value.two-way="Value2 | blocked:lstName.IsBlocked"