Aurelia绑定错误(在浏览器控制台上)

时间:2018-04-19 14:12:54

标签: aurelia aurelia-binding

我在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) `

这可能是什么原因? 提前谢谢!

1 个答案:

答案 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"