我有一个从另一个视图调用的XML片段。
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:u="sap.ui.unified">
<u:Menu itemSelect="handleMenuItemPress">
<u:MenuItem text="Camera" icon="sap-icon://add-photo" press="handleMenuItemPress"/>
<u:MenuItem text="Gallery" icon="sap-icon://background" press="handleMenuItemPress"/>
<u:MenuItem text="Display" visible="{= ${view>ImageData} !==''? true : false}" icon="sap-icon://show" press="handleMenuItemPress"/>
<u:MenuItem text="{view>ImageData}" icon="sap-icon://show" press="handleMenuItemPress"/>
<u:MenuItem text="{view>Comments}" icon="sap-icon://show" press="handleMenuItemPress"/>
</u:Menu>
</core:FragmentDefinition>
像这样在控制器中调用该片段。
handlePressOpenMenu: function (oEvent) {
//Get Current Path
var oButton = oEvent.getSource();
var oAnswerSource = oButton.getBindingContext("view");
var oAnswerPath = oAnswerSource.getPath();
this.path = oAnswerPath;
// create menu only once
if (!this._menu) {
this._menu = sap.ui.xmlfragment(
"CompleteSurvey.view.fragments.Image",
this
);
this._menu.bindElement(this.path);
this.getView().addDependent(this._menu);
}
var eDock = sap.ui.core.Popup.Dock;
this._menu.open(this._bKeyboard, oButton, eDock.BeginTop, eDock.BeginBottom, oButton);
},
由于似乎丢失了上下文,如何从原始视图中获取bindingContext。
我需要在控制器+视图中进行哪些设置?
答案 0 :(得分:2)
解决方案很简单。...
this._menu.setBindingContext(oAnswerSource,“ view”);
this.getView()。addDependent(this._menu);