Интересно, возможно ли связать событие через JSONModel.Связать событие с помощью модели JSON
Если я так, он всегда будет бросать это исключение:
Uncaught TypeError: I.fFunction.call is not a function
Это мой код:
_ViewReference: undefined,
_oMenuItemsConfigModel: undefined,
createMenu: function(oItem){
if (!this._menu) {
this._menu = new sap.ui.unified.Menu(this._oMenuConfig);
this._menu.setModel(this._oMenuItemsConfigModel);
this._menu.bindAggregation("items", "/", new sap.ui.unified.MenuItem({
text: "{text}",
icon: "{icon}",
select: "{select}",
enabled: "{enabled}"
}));
this._ViewReference.addDependent(this._menu);
}
var eDock = sap.ui.core.Popup.Dock;
this._menu.open(false, oItem, eDock.BeginTop, eDock.BeginBottom, oItem);
return oItem;
}
У меня есть универсальный ContextMenu, который просто необходим конфигурации для того, чтобы получить создан , Это, как я называю эту функцию из моего контроллера:
var oContextMenu = new ContextMenu(this.getView(),
new sap.ui.model.json.JSONModel(
[
{
text: "Copy",
select: [this.onContextMenuItemCopySelected, this]
},
{
text: "Paste",
select: [this.onContextMenuItemPasteSelected, this]
}
]
)
);
Вот JSBin пример.
Он работает в JSBin, не так ли? И, пожалуйста, учтите, что я добавил функции 'onContextMenuItemCopySelected' и' onContextMenuItemPasteSelected' для контроллера в примере JSBin. У вас есть некоторые отличия от вашего примера JSBin в вашем реальном коде? – schnoedel
нет, конечно, он работает! Но я серьезно не понимаю, почему это не работает с привязкой! Тем не менее, это отличная работа. –
SAP реализовал привязку данных только для ассоциаций свойств и агрегаций. Его все в [ManagedObject] (https://sapui5.netweaver.ondemand.com/#docs/api/symbols/sap.ui.base.ManagedObject.html). Я предполагаю, что они предполагают, что содержание модели всегда является только данными. Загружается из веб-сервиса, который является истинным, но ваш пример является хорошим контрпримером. – schnoedel