2016-12-01 106 views
-2

我有,我想加载到Main.controller.js'this.byId' 不是一个函数错误

myScript.js

sap.ui.define([], function() { 

    return { 
     ///// 
     testFunc : function(){ 

       var test = this.byId("someId"); 
       console.log(test); 
    }; 
}); 

的myScript的脚本文件。 js文件在我作为一个依赖项加载时在主控制器中成功读取,但我在myScript.js中得到一个错误:“'this.byId'is not a Function”(console.log)

在主控制器内部,“this.byId()”的作用是因为'this'k eyword指向与主控制器(main.view.xml)关联的xml视图。我怎么能有像'myScript.js'的依赖关系指向加载它的控制器所在的同一个xml视图?

主控制器

sap.ui.define([ 
     'jquery.sap.global', 
     'sap/ui/core/mvc/Controller', 
     'sap/ui/model/json/JSONModel', 
     'sap/ui/model/Filter', 
     'sap/ui/model/FilterOperator', 
     'pricingTool/controller/myScript' 
    ], 

    function (jQuery, Controller, JSONModel, Filter, FilterOperator, myScript) { 
     "use strict"; 


     var mainController = Controller.extend("pricingTool.controller.Main", { 

     myScript.testFunc(); 

     ... 

    }); 

    return mainController; 
}); 

main.view.xml

<mvc:View 
    controllerName="pricingTool.controller.Main" 
    xmlns:l="sap.ui.layout" 
    xmlns:core="sap.ui.core" 
    xmlns:f="sap.ui.layout.form" 
    xmlns:mvc="sap.ui.core.mvc" 
    xmlns="sap.m"> 
    ... 
</mvc:View> 

回答

1

您需要更改传递给脚本函数的上下文。您可以使用以下代码执行此操作:

myScript.testFunc.apply(this); 

让我知道这是否解决了您的问题。

+0

它做到了,谢谢! –

相关问题