gpt4 book ai didi

javascript - 如何访问 Controller 中模型声明中的变量?

转载 作者:行者123 更新时间:2023-11-28 18:15:00 24 4
gpt4 key购买 nike

这是我拥有的 Controller ,我想将currencyCheck移动到模型或单独的utility.js文件中,我可以将其加载到 Controller 中,但问题是全局变量。我不知道如何将使用全局变量的函数移动到单独的 js 文件。 UI5中有没有办法声明全局变量?

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

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

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


//define global variables
globalEnv: function() {
nsnButton = this.byId("nsnButton");
price = this.byId("price");
},

onInit: function(oEvent) {

//moving this code to Component.js
//define named/default model(s)
var inputModel = new JSONModel("model/inputs.json");
var productsModel = new JSONModel("model/products.json");

//set model(s) to current xml view
this.getView().setModel(inputModel, "inputModel");
this.getView().setModel(productsModel);

//default application settings
//unload global variables
this.globalEnv();
},

currencyCheck: function(oEvent) {
var inputVal = oEvent.getParameters().value;
var detailId = oEvent.getParameters().id;
var id = detailId.replace(/\__xmlview0--\b/, "");
var currencyCode;
var inputArr = inputVal.split("");

currencyCode = inputArr[0] + inputArr[1] + inputArr[2];

if (id === "price") {

if (inputArr[0].match(/^[\d$]+$/) || currencyCode === 'USD') {
price.setValueState("None");
} else price.setValueState("Error");


} else if (id === "unitPrice") {
console.log(inputVal);
if (inputArr[0].match(/^[\d$]+$/) || currencyCode === 'USD') {
unitPrice.setValueState("None");
} else unitPrice.setValueState("Error");
}


},

onNsnChange: function() {
//enable "Search" button if input has an entry
searchQuery = nsnSearchInput.getValue();

if (searchQuery === "") {
nsnButton.setEnabled(false);
} else {
nsnSearchInput.setValueState("None");
nsnButton.setEnabled(true);
}
},


});

return mainController;
});

最佳答案

不使用全局变量怎么样?您可以将变量设置为本地变量,并将它们作为参数传递给任何其他方法,甚至在其他类中也是如此。

在您的 utility.js 中定义您传输的方法,如下所示:

currencyCheck: function (oEvent, price) {
...
// the code from the original function
...
}

然后您可以在 MainController 中执行以下操作:

currencyCheck: function (oEvent) {
var oPrice = this.byId("price");
Utility.currencyCheck(oEvent, oPrice);
}

当然,您必须在 Controller 文件的开头导入实用程序类。

关于javascript - 如何访问 Controller 中模型声明中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40871996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com