我有一个脚本文件,我想加载到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& #39;不是一个功能" (的console.log)
在主控制器内," this.byId()"之所以有效,是因为这个'关键字指向与主控制器关联的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>
答案 0 :(得分:1)
您需要更改传递给脚本函数的上下文。您可以使用以下代码执行此操作:
myScript.testFunc.apply(this);
如果这解决了您的问题,请告诉我。