在控制器中获取XML-ViewElement(MultiInput)byID

时间:2016-05-01 21:32:50

标签: javascript sapui5

在XML-View中定义了一个MultiInput,如:

<MultiInput 
        placeholder="Tags"
        id="tagInput" 
        showValueHelp="false">
</MultiInput>

现在需要在Controller中的函数中访问Object。在oninit函数中它起作用:

onInit: function() {
   var  multiInput  = this.getView().byId("tagInput")};

但无法在

等其他功能中访问
onInit: function() {
   var  multiInput  = this.getView().byId("tagInput")},
otherFunction: function(){
   var view = this.getView(), // is null
   multiInput = sap.ui.getCore().byId("tagInput"), // is null
   multiInput1 = this.multiInput; // is null
};

我想在OdataRequest的SuccessHandler中使用multiInput,但我无法获得MultiInput-Objekt ......

1 个答案:

答案 0 :(得分:0)

this.getView().byId()sap.ui.getCore().byId()不同。第一个解析相对于视图的ID(例如,在您的情况下为 tagInput ),第二个唯一的全局ID。

也许您已经失去了对this的引用?在javascript中this在回调函数中丢失了。常见的模式是在事件处理程序之前声明var that = this;并使用that.getView().byId()代替。

UI5s attachEvent方法有一个额外的参数来提供在事件处理程序中将成为this的对象。