gpt4 book ai didi

javascript - 与正则表达式的绑定(bind)不会在模型更新时触发

转载 作者:行者123 更新时间:2023-11-29 21:41:43 26 4
gpt4 key购买 nike

我有一个带有正则表达式绑定(bind)的 sap.m.Input。当我的输入是“A”、“B”或“C”时,我的文本是黑色的,否则它会通过 CSS 变成红色。

oComponent.attachValidationError(function(oEvent) {
oEvent.getParameter("element").addStyleClass("become-red");
});
oComponent.attachValidationSuccess(function(oEvent) {
oEvent.getParameter("element").removeStyleClass("become-red");
});

var oInput = new sap.m.Input( {
value: {
path: "Qux>/foo/0/bar/0/baz",
type: new sap.ui.model.type.String(null, {
search: new RegExp("^[ABC]$")
})
}
});

当值为“A”并且我将其更改为“B”时,它可以正常工作。

那么,如果我这样做

oModelQux.setProperty("/foo/0/bar", [{
"baz" : "A"}]);

这正常工作,值再次变为“A”。我的问题是,当我将输入的值更改为不允许的值(例如“D”)时,然后我尝试我的代码

oModelQux.setProperty("/foo/0/bar", [{
"baz" : "A"}]);

没有任何反应。输入确实自动更新为“A”,它只是将字符串“D”保留为红色。

最佳答案

绑定(bind)应该避免错误的值存储在模型中。如果将值从“A”更改为“D”,则该值永远不会存储在模型中,即模型仍保留“A”。因此,您对 setProperty 的调用没有任何效果,因为绑定(bind)的内部值从未更改,并且 setProperty 不会强制绑定(bind)在数据未更改的情况下进行更新。我建议您在单击按钮并调用 refresh(true) 时获取输入字段的绑定(bind)。这应该有效(未经测试)。

除此之外,我建议使用 Select 控件,因为它看起来可用值是固定的。这将使特殊逻辑过时。

关于javascript - 与正则表达式的绑定(bind)不会在模型更新时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32586066/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com