控制器中的sapui5 odata绑定

时间:2014-06-02 13:59:31

标签: odata sapui5

我在演示MyFiorri应用程序上构建应用程序,我使用ODATA绑定数据有问题。我在component.js中定义了odata

jQuery.sap.declare("sap.ui.demo.myFiori.Component");  
sap.ui.core.UIComponent.extend("sap.ui.demo.myFiori.Component", {  
  createContent : function() {  
  // create root view  
  var oView = sap.ui.view({  
  id : "app",  
  viewName : "sap.ui.demo.myFiori.view.App",  
  type : "JS",  
  viewData : { component : this }  
  });  
  // set i18n model  
  var i18nModel = new sap.ui.model.resource.ResourceModel({  
  bundleUrl : "i18n/messageBundle.properties"  
  });  
  oView.setModel(i18nModel, "i18n");  
// // Using OData model to connect against a real service  
  var url = "http://localhost:8080/serveris/SERVERIS.svc/";  
  var oModel = new sap.ui.model.odata.ODataModel(url, true, "", "");  
  oView.setModel(oModel);  
  sap.ui.getCore().setModel(oModel);  
  // set device model  
  var deviceModel = new sap.ui.model.json.JSONModel({  
  isTouch : sap.ui.Device.support.touch,  
        isNoTouch : !sap.ui.Device.support.touch,  
        isPhone : sap.ui.Device.system.phone,  
        isNoPhone : !sap.ui.Device.system.phone,  
        listMode : sap.ui.Device.system.phone ? "None" : "SingleSelectMaster",  
        listItemType : sap.ui.Device.system.phone ? "Active" : "Inactive"  
  });  
  deviceModel.setDefaultBindingMode("OneWay");  
  oView.setModel(deviceModel, "device");  
  // done  
  return oView;  
  }  
});  

现在,我需要阅读这些数据:

<feed xmlns="http://www.w3.org/2005/Atom" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xml:base="http://localhost:8080/serveris/SERVERIS.svc/">
<script id="tinyhippos-injected"/>
<id>http://localhost:8080/serveris/SERVERIS.svc/Users</id>
<title type="text">Users</title>
<updated>2014-05-27T18:07:01.403+03:00</updated>
<author>
<name/>
</author>
<link href="Users" rel="self" title="Users"/>
<entry>
<id>
http://localhost:8080/serveris/SERVERIS.svc/Users(0)
</id>
<title type="text">Users</title>
<updated>2014-05-27T18:07:01.404+03:00</updated>
<category term="serveris.User" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="Users(0)" rel="edit" title="User"/>
<link href="Users(0)/TasklistDetails" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/TasklistDetails" title="TasklistDetails"type="application/atom+xml;type=feed"/>
<content type="application/xml">
<m:properties>
<d:Login>jonas</d:Login>
<d:Passw>saugus</d:Passw>
<d:UserId>0</d:UserId>
</m:properties>
</content>
</entry>
<entry>
<id>
http://localhost:8080/serveris/SERVERIS.svc/Users(1)
</id>
<title type="text">Users</title>
<updated>2014-05-27T18:07:01.405+03:00</updated>
<category term="serveris.User" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<link href="Users(1)" rel="edit" title="User"/>
<link href="Users(1)/TasklistDetails" rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/TasklistDetails" title="TasklistDetails"type="application/atom+xml;type=feed"/>
<content type="application/xml">
<m:properties>
<d:Login>petras</d:Login>
<d:Passw>pass</d:Passw>
<d:UserId>1</d:UserId>
</m:properties>
</content>
</entry>
</feed>

我创建了login.view.xml和login.controller.js,我想要访问这些数据 login.view.xml

<core:View  
    controllerName="sap.ui.demo.myFiori.view.login"  
  xmlns="sap.m"  
  xmlns:l="sap.ui.layout"  
  xmlns:core="sap.ui.core" >  
  <Page  
  title="{i18n>LoginIn}">  
  <VBox    
  class="marginBoxContent" >  
  <items>  
  <Label text="username" />  
      <Input         
        id="nameInput"  
        type="Text"  
        placeholder="enter username ..." />  
  <Label text="Pasword" />  
   <Input  
  id="passwInput"  
  type="Password"  
  placeholder="enter password..." />  
<Button text="Prisijungti"   press="handleContinue" />  
  </items>  
  </VBox>  
  </Page>  
</core:View>  

login.controller.js

jQuery.sap.require("sap.ui.demo.myFiori.util.Formatter");  
sap.ui.controller("sap.ui.demo.myFiori.view.login", {  
  handleContinue : function (evt) {  
// var authinfo = this.getCore().getModel().getData().Users[0];                In this line I should get data  
  var name = this.getView().byId("nameInput").getValue();  
    var paswd = this.getView().byId("passwInput").getValue();  
  if (name == "authinfo.login" && paswd == "authinfo.passw") {  
  var context = evt.getSource().getBindingContext();  
  this.nav.to("Master", context);  
  }  
  else {  
  jQuery.sap.require("sap.m.MessageToast");  
     sap.m.MessageToast.show("there is no such user or bad login data");  
  }  
}  
});  

我希望我清楚地描述了我的问题。

1 个答案:

答案 0 :(得分:1)

handleContinue函数中放置一个调试断点,并尝试查看sap.ui.getCore().getModel().getData()日志中显示的内容。

如果您能够记录某些内容,请尝试在控制台中查看此方式:

  1. var theModel = sap.ui.getCore().getModel()
  2. theModel.oData 看看你得到了什么作为输出,然后你可以继续。