Я хочу связать свойства с моего контроллера с представлением.SAPUI5: Свойства контроллера привязки к виду
в angularjs это так просто, как манипулирование $ объем:
$scope.buttonProps = {
value: 'cheese',
disabled: 'disabled',
onClick: function() {}
};
<custom-button disabled="buttonProps.disabled" onclick="buttonProps.onClick" value="{{buttonProps.value}}" />
Однако, когда я пытаюсь сделать то же самое в SAPUI5
sap.ui.core.mvc.Controller.extend('...', {
buttonProps: {
value: 'cheese',
disabled: 'disabled',
onClick: function() {}
}
});
<custom-button value="{buttonProps.value}" disabled="{buttonProps.disabled}" click="buttonProps.onClick" />
не работает - основа не кажется чтобы иметь доступ к свойствам объекта «buttonProps».
если я, однако, переместить свойства непосредственно на контроллер, он работает
sap.ui.core.mvc.Controller.extend('...', {
value: 'cheese',
disabled: 'disabled',
onClick: function() {}
});
<custom-button value="{value}" disabled="{disabled}" click="onClick" />
, но, конечно, это очень неорганизованный способ работы, когда вы получите более сложные виды.
Я попытался создать JSONModel и связывание значений с помощью модели:
sap.ui.core.mvc.Controller.extend('...', {
buttonProps: new sap.ui.model.json.JSONModel({
value: 'cheese',
disabled: 'disabled',
onClick: function() {}
})
onAfterRendering: function() {
this.byId('btn').setModel(this.buttonProps);
}
});
<custom-button id="btn" value="{/value}" disabled="{/disabled}" click="/onClick" />
и она работает за все ... за исключением функций.
Есть ли способ привязать свойства моего контроллера к виду?
Да, это все здорово, точно так, как я думал, - спасибо за исправление моей синтаксиса. Но почему они создали структуру, так что я не могу организовать свои методы в под-объектах? Например, почему я не могу определить 'buttonMethods: {onClick: ...}' 'на моем контроллере, а затем присоединить функцию к кнопке:' '... click =" buttonMethods.onClick "...' ' –
почему вам нужны под-объекты? В представлении обычно есть один контроллер с атрибутом controllerName, определенным в представлении XML. – Allen
Я хотел бы иметь под-объекты для организации моих методов, чтобы сделать код более удобным. Вместо того, чтобы иметь 5 различных методов onClick со странным соглашением об именах, таких как nameButtonOnClick, streetButtonOnClick и т. Д., Я хотел бы организовать обработчики функций каждой кнопки в под-объект, чтобы они были сгруппированы вместе. То есть nameButton: {onClick: ..., onHover: ...}, streetButton: {onClick: ..., onHover ...}. Таким образом, код легче управлять, и в конечном итоге его легко поддерживать. –