Sapui5 访问所有页面元素的getValueState

Sapui5 访问所有页面元素的getValueState,sapui5,Sapui5,我需要访问时间列表的valueState属性 在我看来,将显示四次,每天一次。模型中提供了这些信息 var-storeModel=new-JSONModel({ EffectiveDateFrom:此项。\您选择了EffectiveDateFrom, SiteInfo:oModelData, 错,, 开放时间:[{ 工作日:“星期日”, 开始时间1:“08:00”, endTime1:“18:00”, startTime2:“”, 结束时间2:“”, 是的, 交易小时:“10:00”, 一夜之间

我需要访问时间列表的
valueState
属性

在我看来,将显示四次,每天一次。模型中提供了这些信息

var-storeModel=new-JSONModel({
EffectiveDateFrom:此项。\您选择了EffectiveDateFrom,
SiteInfo:oModelData,
错,,
开放时间:[{
工作日:“星期日”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期一”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期二”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期三”,
开始时间1:“08:00”,
结束时间1:“18:30”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期四”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期五”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}, {
工作日:“星期六”,
开始时间1:“08:00”,
endTime1:“18:00”,
startTime2:“”,
结束时间2:“”,
是的,
交易小时:“10:00”,
一夜之间:错
}]
});

访问单个组件时,我可以将值状态设置为错误:

oViewComponent.setValueState(sap.ui.core.ValueState.Success);

如何使用
getValueState
一次性检查所有时间字段中是否存在错误?

这可能并不美观,但如果使用

要使用
MessageManager
,您必须在
MessageManager
上打开控件或整个视图。也许你已经这么做了

sap.ui.getCore().getMessageManager().registerObject(this.getView(),true);
然后,您可以从
MessageManager
中检索
MessageModel
MessageModel
包含所有消息。每个具有
target
属性的消息都与特定控件的特定属性相关联。
target
属性包含以下格式的字符串:
controlId/property
。由于您的视图不是在
MessageManager
上注册的唯一视图,因此您必须从
MessageModel
中筛选消息

var messagesModelMessages=sap.ui.getCore().getMessageManager().getMessageModel().getProperty(“/”);
var viewPrefix=this.getView().getId()+“--”;
if($.isArray(messagesModelMessages)){
messagesModelMessages.forEach(函数(消息){
if(message.target&&message.target.startsWith(viewPrefix)){
//消息指向此视图中的控件
var controlId=message.target.split(“/”[0];
var control=sap.ui.getCore().byId(controlId);
}
});
}

它可能并不漂亮,但如果您使用

要使用
MessageManager
,您必须在
MessageManager
上打开控件或整个视图。也许你已经这么做了

sap.ui.getCore().getMessageManager().registerObject(this.getView(),true);
然后,您可以从
MessageManager
中检索
MessageModel
MessageModel
包含所有消息。每个具有
target
属性的消息都与特定控件的特定属性相关联。
target
属性包含以下格式的字符串:
controlId/property
。由于您的视图不是在
MessageManager
上注册的唯一视图,因此您必须从
MessageModel
中筛选消息

var messagesModelMessages=sap.ui.getCore().getMessageManager().getMessageModel().getProperty(“/”);
var viewPrefix=this.getView().getId()+“--”;
if($.isArray(messagesModelMessages)){
messagesModelMessages.forEach(函数(消息){
if(message.target&&message.target.startsWith(viewPrefix)){
//消息指向此视图中的控件
var controlId=message.target.split(“/”[0];
var control=sap.ui.getCore().byId(controlId);
}
});
}

@hirse如何在消息中设置目标?解析器会自动使用绑定路径来确定目标ID和属性吗?@Kyle,我没有写这个答案,也许schnoedel能帮上忙?@Kyle,MessageManager会使用验证事件。具有源代码管理和源属性作为参数。当用户输入无效值时,双向绑定的sap.ui.model.Type会引发ValidationException@hirse如何在消息中设置目标?解析器会自动使用绑定路径来确定目标ID和属性吗?@Kyle,我没有写这个答案,也许schnoedel能帮上忙?@Kyle,MessageManager会使用验证事件。具有源代码管理和源属性作为参数。当用户输入无效值时,双向绑定的sap.ui.model.Type会引发ValidationException。