Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery要求一个requirejs模块?_Javascript_Jquery_Requirejs_Sapui5 - Fatal编程技术网

Javascript 如何使用jquery要求一个requirejs模块?

Javascript 如何使用jquery要求一个requirejs模块?,javascript,jquery,requirejs,sapui5,Javascript,Jquery,Requirejs,Sapui5,假设我有这个ResourceBundleContext.js文件(requirejs模块): 在路径中: sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext 我想使用jquery来要求上面的模块,这将很好: jQuery.sap.require("sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext")

假设我有这个ResourceBundleContext.js文件(requirejs模块):

在路径中:

sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext
我想使用jquery来要求上面的模块,这将很好:

jQuery.sap.require("sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.resourceBundleContext");
我如何使用jQuery要求一个requirejs模块


谢谢

这是因为您混合了“旧”同步requirejs和新的异步AMD模块。您有两种可能的解决方案:

  • 在模块定义中,您必须将
    true
    作为最后一个参数,以将模块导出到全局命名空间中,这样您就可以在
    jquery.sap.require()之后访问它
  • sap.ui.define([
    “sap/ui/model/resource/ResourceModel”
    ],功能(资源模型)
    {
    "严格使用",;
    var resourceBundleContext=函数()
    {
    var i18nModel=新资源模型({
    bundleName:“sap/rules/ui/src/sap/rules/ui/lib/parser/i18n.messages\u description”
    });
    返回{
    getString:函数(messageKey,paramsArray)
    {
    var oBundle=i18nModel.getResourceBundle();
    var sMsg=oBundle.getText(messageKey,paramsArray);
    jQuery.sap.log.debug(“代码:+messageKey+”,参数:+paramsArray+”\n消息:+sMsg);
    返回sMsg;
    }
    };
    };
    返回新的resourceBundleContext;
    
    },true/*导出到全局命名空间*/)// 这是因为您混合了“旧”同步requirejs和新的异步AMD模块。您有两种可能的解决方案:

  • 在模块定义中,您必须将
    true
    作为最后一个参数,以将模块导出到全局命名空间中,这样您就可以在
    jquery.sap.require()之后访问它
  • sap.ui.define([
    “sap/ui/model/resource/ResourceModel”
    ],功能(资源模型)
    {
    "严格使用",;
    var resourceBundleContext=函数()
    {
    var i18nModel=新资源模型({
    bundleName:“sap/rules/ui/src/sap/rules/ui/lib/parser/i18n.messages\u description”
    });
    返回{
    getString:函数(messageKey,paramsArray)
    {
    var oBundle=i18nModel.getResourceBundle();
    var sMsg=oBundle.getText(messageKey,paramsArray);
    jQuery.sap.log.debug(“代码:+messageKey+”,参数:+paramsArray+”\n消息:+sMsg);
    返回sMsg;
    }
    };
    };
    返回新的resourceBundleContext;
    
    },true/*导出到全局命名空间*/)// 在使用
    resourceBundleContext
    的模块中,您还可以使用与
    resourceBundleContext
    定义中类似的AMD模式,例如:

    sap.ui.define([
        "sap/hrf/ui/uilib/js/parser/infrastructure/locale/lib/resourceBundleContext"
    ], function (ResourceBundleContext)
    {
        'use strict';
    
        var AwesomeApp = function ()
        {
            var resourceBundleContext = new ResourceBundleContext();
            alert(resourceBundleContext.getString("AwesomeKey", ["AwesomeParms"]));
        };
    
        return AwesomeApp;
    
    });
    
    在整个UI5应用程序中以AMD风格构建所有模块可以提供一定程度的一致性,并提高加载所需模块的性能


    还请注意,SAP在其
    define
    的实现中没有利用require.js,也不完全兼容require.js或其他AMD加载程序。您可以在使用
    resourceBundleContext
    的模块中阅读更多关于SAP实施以及与require.js的差异的信息,您还可以使用与
    resourceBundleContext
    定义中类似的AMD模式,例如:

    sap.ui.define([
        "sap/hrf/ui/uilib/js/parser/infrastructure/locale/lib/resourceBundleContext"
    ], function (ResourceBundleContext)
    {
        'use strict';
    
        var AwesomeApp = function ()
        {
            var resourceBundleContext = new ResourceBundleContext();
            alert(resourceBundleContext.getString("AwesomeKey", ["AwesomeParms"]));
        };
    
        return AwesomeApp;
    
    });
    
    在整个UI5应用程序中以AMD风格构建所有模块可以提供一定程度的一致性,并提高加载所需模块的性能


    还请注意,SAP在其
    define
    的实现中没有利用require.js,也不完全兼容require.js或其他AMD加载程序。您可以阅读更多关于SAP实施的信息,以及与require.js的区别,您对“will not good”的理解是什么?您是否在控制台中收到错误消息?加载失败了吗?你不能在require之后访问对象吗?@schnoedel hi,我的意思是它不需要fail,它调用文件但不需要他,在我这样做之后:var ResourceBundleContext=sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.ResourceBundleContext;ResourceBundleContext将不被定义“将不好”是什么意思?您是否在控制台中收到错误消息?加载失败了吗?你不能在require之后访问对象吗?@schnoedel hi,我的意思是它不需要fail,它调用文件但不需要他,在我这样做之后:var ResourceBundleContext=sap.hrf.ui.uilib.js.parser.infrastructure.locale.lib.ResourceBundleContext;ResourceBundleContext将不会被修改,请你写下我到底需要写在哪里?真的吗?非常感谢!,将模块用作全局模块时会对性能造成损害?那么,
    jquery.sap.require
    会发出同步ajax请求,以便第一次加载模块文件。这可能会阻塞您的ui线程一段时间。这就是ui5迁移到异步AMD模式的原因之一。你能写下我最后需要在哪里写下真的吗?非常感谢!,将模块用作全局模块时会对性能造成损害?那么,
    jquery.sap.require
    会发出同步ajax请求,以便第一次加载模块文件。这可能会阻塞您的ui线程一段时间。这就是ui5迁移到异步AMD模式的原因之一。