Quiero vincular un ProcessFlowLaneHeader en SAPUI5 a un modelo OData en SAPUI5. Los textos y la posición no son un problema para encuadernar.
Mi problema es que no sé cómo puedo vincular correctamente el estado de la propiedad a un solo atributo de OData. La propiedad de estado está exceptuando una matriz u objeto, pero me gustaría dar diferentes atributos de estado y valor en mi modelo OData.
Esta es la forma cuando configura manualmente una matriz en el controlador con valores fijos
new sap.suite.ui.commons.ProcessFlowLaneHeader({ text: "{ProcessFlowModel>label}", position: "{ProcessFlowModel>position}", state: [ { "state": "Positive", "value": 100 } ] })pero quiero vincular el estado y el valor del estado de la propiedad a un ODataModel, y no funciona. ¿Mi sintaxis es incorrecta o es esto posible?
new sap.suite.ui.commons.ProcessFlowLaneHeader({ text: "{ProcessFlowModel>label}", position: "{ProcessFlowModel>position}", state: [ { "state": "'{ProcessFlowModel>state}'", "value": '{ProcessFlowModel>value}' } ] })Sé que podría hacerlo con un conjunto de entidades expandido de varios niveles después de modificar mi servicio OData, porque SAPUI5 espera un conjunto de entidades anidadas o expandidas, pero me gustaría resolverlo con atributos únicos:
Mi salida de OData parece
"state": "Positive", "value": "50"y no así, y esto estaría bien hasta donde yo sé
"state": [ { "state": "Positive", "value": 25 }Entonces, mi pregunta también es, ¿cómo puedo vincular objetos o matrices en SAPUI5 sin usar un conjunto de entidades expandido multinivel?
Nunca he usado el control, pero mi respuesta sería demasiado larga para un comentario. De todo lo que sé sobre UI5, espero que puedas hacer lo siguiente:
Cree un formateador que devuelva el objeto en el formato esperado por el control.
formatProcessFlowLaneHeaderState: function(state, value) { return { state, value }; }Entonces úsalo en tu encuadernación
state: "{ parts: ['ProcessFlowModel>state', 'ProcessFlowModel>value'], formatter: '.formatProcessFlowLaneHeaderState' }"Si se pregunta acerca de la sintaxis del formateador, está utilizando nombres de propiedad abreviados .
Además, si entiendo los documentos correctamente, ni siquiera necesita crear un objeto, pero puede devolver una matriz con dos valores. Entonces ni siquiera necesita el formateador, pero puede usar el enlace de expresión:
state: "{= [${ProcessFlowModel>state}, ${ProcessFlowModel>value}] }"Mi aplicación no encontró mi método formateador, así que lo puse dentro del enlace:
new sap.suite.ui.commons.ProcessFlowLaneHeader({ text: "{ProcessFlowModel>label}", position: "{ProcessFlowModel>position}", state: { parts: ['ProcessFlowModel>state', 'ProcessFlowModel>value'], formatter: function (state, value) { return [{ state: state, value: value }]; } } })