Dependency injection &引用';这个.byId';不是一个函数;控制台中的错误

Dependency injection &引用';这个.byId';不是一个函数;控制台中的错误,dependency-injection,sapui5,Dependency Injection,Sapui5,我有一个脚本文件要加载到Main.controller.js中 myScript.js sap.ui.define([], function () { return { ///// testFunc : function(){ var test = this.byId("someId"); console.log(test); }; }); 当我将myScri

我有一个脚本文件要加载到Main.controller.js中

myScript.js

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

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

                var test = this.byId("someId");
                console.log(test);
    };
});
当我将myScript.js文件作为依赖项加载到主控制器中时,该文件已在主控制器中成功读取(请参见下文),但在myScript.js中出现错误:

“'this.byId'不是函数”(console.log)

在主控制器内部,“this.byId()”起作用,因为“this”关键字指向与主控制器关联的xml视图(main.view.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>

...

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

 myScript.testFunc.apply(this);
让我知道这是否解决了您的问题