控制台中的"'this.byId' is not a Function"错误



我有一个我想加载到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()"之所以起作用,是因为"此"关键字指向与主控制器(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>

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

 myScript.testFunc.apply(this);

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

相关内容

最新更新