为XML片段设置BindingContext

时间:2018-07-30 21:19:41

标签: xml data-binding sapui5

我有一个从另一个视图调用的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。

我需要在控制器+视图中进行哪些设置?

1 个答案:

答案 0 :(得分:2)

解决方案很简单。...

this._menu.setBindingContext(oAnswerSource,“ view”);

this.getView()。addDependent(this._menu);