将动态片段绑定到视图

问题描述 投票:1回答:1

我想通过视图动态加载XML片段。我在Fragment的视图中加载模型绑定时遇到了一些问题。

为什么这样做?

<Input value="{mobile}" />

但这不是吗?

<core:Fragment fragmentName="{mobile}" type="XML" />

调节器

setFragmentNameToView: function(){          
        var oModel = new sap.ui.model.json.JSONModel({
            mobile: "com.xxxxxxx.fragment.fieldsFragment"
        });

        var bindingContext = new sap.ui.model.Context();
        bindingContext.oModel = oModel;
        bindingContext.sPath = "/";

        this.getView().setBindingContext(bindingContext);
        this.getView().setModel(oModel);
    },

结果输入

enter image description here

结果片段enter image description here

sapui5
1个回答
1
投票

我担心片段会在控制器初始化之前尝试加载。如果符合您的要求,您可以通过控制器添加片段。由于负载顺序,我没有别的办法。我在下面添加了一个小例子。

以下是一些提示:

  1. 请务必传递XML片段中视图的ID,否则您将无法使用this.byId("IDoftheControl")访问控件。这是因为如果通过控制器添加片段,它将不会添加视图的前缀。
  2. 添加this作为片段实例化中的最后一个参数。如果不这样做,则不会执行您添加到控件中的函数,因为找不到片段控件的控制器。
  3. 如果它更符合您的要求,请通过VBox或其他布局控件添加它们。如果您向视图添加其他内容,它将更像这样的可读性。

Dorien,希望这可以帮到你。

视图

    <Page title="Fragment Test Page" id="idPage">   
    </Page>

调节器

    onInit: function(){
        this.onAddFragment();
    },

    onAddFragment: function(){
        var oFragment = sap.ui.xmlfragment(this.getView().getId(), "<PathToFragment>", this);
        this.byId("idPage").addContent(oFragment);
    }
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.