Sapui5 将动态片段绑定到视图

Sapui5 将动态片段绑定到视图,sapui5,Sapui5,我想通过视图动态加载XML片段。我在片段视图中加载模型绑定时遇到一些问题 为什么这样做有效 <Input value="{mobile}" /> 结果输入 结果片段 恐怕在初始化控制器之前,该片段将尝试加载。如果符合您的要求,您可以通过控制器添加片段。由于装载顺序,我看不到其他方法。我在下面添加了一个小示例 以下是一些提示: 请确保在XML片段中传递视图的ID,否则您将无法使用this.byId(“IDoftheControl”)访问控件。这是因为如果通过控制器添加片段,它不会添

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

为什么这样做有效

<Input value="{mobile}" />
结果输入

结果片段

恐怕在初始化控制器之前,该片段将尝试加载。如果符合您的要求,您可以通过控制器添加片段。由于装载顺序,我看不到其他方法。我在下面添加了一个小示例

以下是一些提示:

  • 请确保在XML片段中传递视图的ID,否则您将无法使用
    this.byId(“IDoftheControl”)
    访问控件。这是因为如果通过控制器添加片段,它不会添加视图的前缀

  • 添加
    作为片段实例化中的最后一个参数。如果不这样做,您添加到控件中的函数将不会执行,因为将找不到片段控件的控制器

  • 如果它更适合您的需求,请通过
    VBox
    或其他布局控件添加它们。如果将其他内容添加到视图中,它将更易于阅读

  • 希望这能帮到你,多琳

    查看

        <Page title="Fragment Test Page" id="idPage">   
        </Page>
    
    
    
    控制器

    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);
        },
    
        onInit: function(){
            this.onAddFragment();
        },
    
        onAddFragment: function(){
            var oFragment = sap.ui.xmlfragment(this.getView().getId(), "<PathToFragment>", this);
            this.byId("idPage").addContent(oFragment);
        }
    
    onInit:function(){
    这个.onAddFragment();
    },
    onAddFragment:函数(){
    ragment的var=sap.ui.xmlfragment(this.getView().getId(),“”,this);
    此.byId(“idPage”).addContent(of ragment);
    }
    
    我试过调试订单,你是对的。我也可以用你的方式。非常感谢。
        onInit: function(){
            this.onAddFragment();
        },
    
        onAddFragment: function(){
            var oFragment = sap.ui.xmlfragment(this.getView().getId(), "<PathToFragment>", this);
            this.byId("idPage").addContent(oFragment);
        }