Javascript 我想将这些值传递给标签odata
由于声明的变量(idno,namecity)在括号内,所以我无法从外部访问它们。这是获得价值的方法还是最好的方法。多谢各位Javascript 我想将这些值传递给标签odata,javascript,odata,sapui5,Javascript,Odata,Sapui5,由于声明的变量(idno,namecity)在括号内,所以我无法从外部访问它们。这是获得价值的方法还是最好的方法。多谢各位 <script> var app = sap.m.App("myApp",{}); var url = "proxy/http/server/ZCUST_TESTING_SRV /?$filter=IKunnr eq '800COL101'"; var username = "mobtest"; var password = "w
<script>
var app = sap.m.App("myApp",{});
var url = "proxy/http/server/ZCUST_TESTING_SRV /?$filter=IKunnr eq '800COL101'";
var username = "mobtest";
var password = "welcome1";
var oModel = new sap.ui.model.odata.ODataModel(url, true, username, password);
oModel.read('/', null, null, true, function(oData, oResponse)
{
var dataget = JSON.stringify(oData);
var count = oData.results[0].Ort01;
var namecity= oData.results[0].Name1;
var idno= oData.results[0].Kunnr;
});
var l4 = new sap.m.Label("l4",{text: count});
var l5 = new sap.m.Label("l5",{text: namecity});
var l6 = new sap.m.Label("l6",{text: idno});
var page = new sap.m.Page("page",{
title:"Address Details",
showNavButton:true,
navButtonTap: function(){
//app.back();
app.to("Page");
},
content: [ l4,l5,l6, new sap.m.Button({text:"submit" }})]
});
app.addPage(page);
app.placeAt('content');
</script>
var-app=sap.m.app(“myApp”,{});
var url=“proxy/http/server/ZCUST\u TESTING\u SRV/?$filter=ikunr eq'800COL101';
var username=“mobtest”;
var password=“welcome1”;
var oModel=new sap.ui.model.odata.ODataModel(url、true、用户名、密码);
oModel.read('/',null,null,true,function(oData,orResponse)
{
var dataget=JSON.stringify(oData);
var count=oData.results[0].Ort01;
var namecity=oData.results[0].Name1;
var idno=oData.results[0].Kunnr;
});
var l4=新的sap.m.Label(“l4”,{text:count});
var l5=新的sap.m.Label(“l5”,{text:namecity});
var l6=新的sap.m.Label(“l6”,{text:idno});
var page=new sap.m.page(“page”{
标题:“地址详情”,
showNavButton:对,
navButtonTap:函数(){
//app.back();
附录至(“第页”);
},
内容:[l4,l5,l6,new sap.m.Button({text:“submit”}})]
});
app.addPage(第页);
app.placeAt(“内容”);
当OData调用成功完成后调用回调函数时,回调之外的count、namecity和其他变量将被视为“未定义”,并且这些变量仅在此时设置。您应该在回调中执行UI呈现逻辑,最佳实践是使用数据绑定
例如,您的JSON字符串如下所示:
{
"results":
[
{
"Ort01":"1",
"Name1":"2",
"Kunnr": "3"
}
]
}
var oModel = new sap.ui.model.odata.ODataModel(url, true, username, password);
var l4 = new sap.m.Label("l4",{text: "{/results/0/Ort01}"});
// {/results/0/Ort01} is the binding path
var l5 = new sap.m.Label("l5",{text: "{/results/0/Name1}"});
var l6 = new sap.m.Label("l6",{text: "{/results/0/Kunnr}"});
var page = new sap.m.Page("page",{
title:"Address Details",
showNavButton:true,
navButtonTap: function(){
//app.back();
app.to("Page");
},
content: [ l4,l5,l6, new sap.m.Button({text:"submit" }})]});
app.addPage(page);
app.placeAt('content');
oModel.read('/', null, null, true, function(oData, oResponse)
{
//Data binding
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(oData);
page.setModel(oModel);
});
按以下步骤进行数据绑定:
{
"results":
[
{
"Ort01":"1",
"Name1":"2",
"Kunnr": "3"
}
]
}
var oModel = new sap.ui.model.odata.ODataModel(url, true, username, password);
var l4 = new sap.m.Label("l4",{text: "{/results/0/Ort01}"});
// {/results/0/Ort01} is the binding path
var l5 = new sap.m.Label("l5",{text: "{/results/0/Name1}"});
var l6 = new sap.m.Label("l6",{text: "{/results/0/Kunnr}"});
var page = new sap.m.Page("page",{
title:"Address Details",
showNavButton:true,
navButtonTap: function(){
//app.back();
app.to("Page");
},
content: [ l4,l5,l6, new sap.m.Button({text:"submit" }})]});
app.addPage(page);
app.placeAt('content');
oModel.read('/', null, null, true, function(oData, oResponse)
{
//Data binding
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(oData);
page.setModel(oModel);
});
这是你的出发点。有关详细信息,请参阅和阅读的代码
问候,,
Allen根据对您问题的评论中的讨论,我为您提供了一个更恰当地使用ODataModel的示例,不反对ODataModel,不必进行显式读取,不直接访问
结果
属性,而不是手动捕获检索到的数据并将其放入新的JSON模型中
基本上,实例化ODataModel,在控件属性上使用绑定语法,并设置适当的绑定上下文,以便解析相对路径
。我用XML编写了UI控件,因为它更干净,并且使用了Northwind模型,但在其他方面,我试图保持您最初的目标
下面是该示例中的一些片段:
<App>
<Page
binding="{/Employees(1)}"
title="Address Details"
showNavButton="true">
<content>
<Label text="{TitleOfCourtesy}" />
<Label text="{FirstName}" />
<Label text="{LastName}" />
</content>
</Page>
</App>
注意ODataModel的设置方式,注意没有任何
read()
调用,没有任何试图捕获和存储数据的回调成功处理程序,也没有任何帮助器JSON模型。(另外,我正在使用非常有用的服务,因此我们可以查看一个不使用代理等的远程OData服务示例)。为什么要这样做?它正在成为一种反模式。让工具箱完成工作;将模型分配到控制树并只使用数据绑定。我对sapui5是新手。你能给我举个例子吗(见我下面的答案)这个问题,代码几乎相同,昨天在SCN上也被问到了——你也是吗?谢谢你,先生,我可以知道。Allen,我谦虚地建议你不要鼓励这种事情——在显式OData模型读取调用的成功回调中创建JSON模型是,至少在我看来,这是一个糟糕的做法。嗨,qmacro,你能详细说明一下吗?请看下面的答案以获得更好的方法。