我想通过视图动态加载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);
},
结果输入
我担心片段会在控制器初始化之前尝试加载。如果符合您的要求,您可以通过控制器添加片段。由于负载顺序,我没有别的办法。我在下面添加了一个小例子。
以下是一些提示:
this.byId("IDoftheControl")
访问控件。这是因为如果通过控制器添加片段,它将不会添加视图的前缀。this
作为片段实例化中的最后一个参数。如果不这样做,则不会执行您添加到控件中的函数,因为找不到片段控件的控制器。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);
}