2016-01-13 84 views
0

如何在我的sapUI5 XML視圖中顯示控制器變量?如何在sapui5 XML視圖中顯示控制器變量?

到目前爲止,我有一個控制器

sap.ui.define([ 
    "sap/ui/core/mvc/Controller" 
], function (Controller) { 
    "use strict"; 

    return Controller.extend("sap.ui.demo.myApp.myController", { 
     onInit: function() { 
      this.myName = "Jon Doe"; 
     } 
    }); 
}); 

而一個XML視圖

<mvc:View 
    controllerName="sap.ui.demo.myApp.myController" 
    xmlns="sap.m"> 
<Panel> 
    <content> 
     <Label text="bind controller myName to this label"/> 
    </content> 
</Panel> 

這是可能的,而無需使用模型綁定?如果不是,最聰明(最短)的方法是什麼?

回答

2

爲什麼要避免模型綁定?隨着模型綁定也許不是最短的,而是一個典型的短方法是:

sap.ui.define([ 
"sap/ui/core/mvc/Controller", "sap/ui/model/json/JSONModel" 
], function (Controller, JSONModel) { 
"use strict"; 

    return Controller.extend("sap.ui.demo.myApp.myController", { 
     onInit: function() { 
      this.myName = "Jon Doe"; 
      var oViewModel = new JSONModel({myName: this.myName}); 
      this.getView().setModel(oViewModel,"view"); 
     } 
    }); 
}); 

,並在視圖中綁定:

<mvc:View 
    controllerName="sap.ui.demo.myApp.myController" 
    xmlns="sap.m"> 
<Panel> 
    <content> 
     <Label text="{view>/myName}"/> 
    </content> 
</Panel> 
+0

感謝您的回答。我希望可能有另一種方式來做到這一點。但你是對的:模型綁定比訪問控制器中的視圖更好。 – Benvorth

2

我不認爲有可能在視圖中使用控制器變量。

但是有一個快捷方式到這個問題:僅僅通過它id從視圖中獲得所需的控制的觀點被渲染後,並設置要控制的任何值:

return Controller.extend("sap.ui.demo.myApp.myController", { 
    onAfterRendering: function() { 
     sap.ui.getCore().byId(this.createId("<label's id>")).setText("Jon Doe"); 
    } 
}); 

當然,上面示例中的「Jon Doe」文本可能是一個變量:

var sText = "Jon Doe"; 
sap.ui.getCore().byId(this.createId("<label's id>")).setText(sText); 
+0

感謝您的建議。我不想直接在控制器中操作View ... – Benvorth

相關問題