Sapui5 如何在sapui中将控件绑定到json模型

Sapui5 如何在sapui中将控件绑定到json模型,sapui5,Sapui5,为什么我不能使用这些sap.ui.getCore().setModel(oModel)和 其他函数中的.getView().setModel(“oModel”、“someModel”) 超过sapui5中控制器的生命周期挂钩 我正在尝试将模型绑定到视图的控件,而不给出它 一个id。所以我想制作一个模型,并将该模型设置为 我会绑起来的 JavaScript视图中的处理程序上下文 jQuery.sap.require(“sap.m.MessageToast”); sap.ui.jsview(“l

为什么我不能使用这些
sap.ui.getCore().setModel(oModel)和
其他函数中的.getView().setModel(“oModel”、“someModel”)
超过sapui5中控制器的生命周期挂钩

我正在尝试将模型绑定到视图的控件,而不给出它 一个id。所以我想制作一个模型,并将该模型设置为 我会绑起来的


JavaScript视图中的处理程序上下文
jQuery.sap.require(“sap.m.MessageToast”);
sap.ui.jsview(“local.view”{
getControllerName:函数(){
返回“local.controller”;
},
createContent:函数(oController){
var oText=新的sap.m.Text();
bindProperty(“text”,“oModel>/myData”);
var oInput=new sap.m.Input();
bindValue(“oModel>/myData”);
var oIn=new sap.m.Input();
oIn.bindValue(“oModel>/myData”);
var oBar=newsap.m.Bar({contentLeft:oIn,contentMiddle:oText});
var oButton=new sap.m.Button({text:“按下重置”,
按:函数(){
oController.resetModel();
}
});
var oPage=new sap.m.Page({headerContent:[oInput],footer:oBar,showNavButton:true,content:[oButton]});
var oShell=new sap.m.App({pages:oPage});
返回奥谢尔;
}
});
sap.ui.controller(“local.controller”{
onInit:function(){
var aData={“myData”:“enter!!”};
var oModel=new sap.ui.model.json.JSONModel();
oModel.setData(aData);
setModel(oModel,“oModel”);
},
resetModel:function(){
var-oModel=sap.ui.getCore().getModel(“oModel”);
oModel.oData.myData=“重置”;
}
});
sap.ui.view({
类型:sap.ui.core.mvc.ViewType.JS,
视图名称:“local.view”
}).placeAt(“uiArea”);

您在这里问了很多问题,让我来详细解释一下

  • 为什么我不能使用这些sap.ui.getCore().setModel(oModel)和 除了sapui5中控制器的生命周期挂钩之外的函数中的this.getView().setModel(“oModel”、“someModel”)。-您可以访问它们

    我不确定您在使用
    sap.ui.getCore().setModel(oModel)
    时会遇到什么问题,但是对于
    this.getView().setModel(“oModel”,“someModel”)
    我可以说@fabiopagoti评论了什么,您可能在错误的上下文中使用了它。 这是一个例子

    onInit:function()
    {
    /*“this”指此处的控制器,
    */
    var-oController=this;
    myOwnFunction:function()
    {
    /*“this”现在指的是“onInit”中的作用域
    因此,这个.getView().setModel()将无法工作。
    oController.getView().setModel()将起作用*/
    }
    }

  • 是否有任何方法可以访问my view控制器中的控件而不给它id,仅当视图是JavaScript视图时

    view.js中,不要将变量声明为

    var-ovinable

    宣布为,

    this.ovinable

    controller.js中需要访问它的任何地方(在控制器的上下文中)访问变量,如下所示:

    this.getView().ovinable

  • 如何更新绑定到按钮上其他控件的模型

    resetModel:function()
    {
    var-oModel=sap.ui.getCore().getModel(“oModel”);
    oModel.setProperty(“/myData”,“Reset”);
    }


  • setProperty文档是

    您在这里提出了很多问题,所以让我将其细分

  • 为什么我不能使用这些sap.ui.getCore().setModel(oModel)和 除了sapui5中控制器的生命周期挂钩之外的函数中的this.getView().setModel(“oModel”、“someModel”)。-您可以访问它们

    我不确定您在使用
    sap.ui.getCore().setModel(oModel)
    时会遇到什么问题,但是对于
    this.getView().setModel(“oModel”,“someModel”)
    我可以说@fabiopagoti评论了什么,您可能在错误的上下文中使用了它。 这是一个例子

    onInit:function()
    {
    /*“this”指此处的控制器,
    */
    var-oController=this;
    myOwnFunction:function()
    {
    /*“this”现在指的是“onInit”中的作用域
    因此,这个.getView().setModel()将无法工作。
    oController.getView().setModel()将起作用*/
    }
    }

  • 是否有任何方法可以访问my view控制器中的控件而不给它id,仅当视图是JavaScript视图时

    view.js中,不要将变量声明为

    var-ovinable

    宣布为,

    this.ovinable

    controller.js中需要访问它的任何地方(在控制器的上下文中)访问变量,如下所示:

    this.getView().ovinable

  • 如何更新绑定到按钮上其他控件的模型

    resetModel:function()
    {
    var-oModel=sap.ui.getCore().getModel(“oModel”);
    oModel.setProperty(“/myData”,“Reset”);
    }


  • setProperty文档不正确,您的模型更新不正确

    记住,永远不要使用内部
    .oData.=,但始终使用:
    
    .setProperty(“,)
    。 这样,您将绝对确定您的模型将使用新值进行更新

    将resetModel方法更改为

    resetModel:function(){
        var oModel=sap.ui.getCore().getModel("oModel");
        oModel.setProperty("/myData", "Reset");             
    }
    

    如果您不正确地更新模型,它将起作用

    记住,永远不要在中使用