首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组传递到所需的shim

将数组传递到所需的shim
EN

Stack Overflow用户
提问于 2017-07-26 20:45:30
回答 2查看 330关注 0票数 1

我正在尝试获得与magento 2要求工作的常量联系人脚本。(我试着将它内联,但它会发生冲突并导致错误)

他们的脚本需要一个数组localizedErrMapjQuery对象。

我创建了localizedErrMap.js

代码语言:javascript
复制
define([],
    function(){
        var localizedErrMap = {};
        localizedErrMap['required'] =       'This field is required.';
        localizedErrMap['ca'] =             'An unexpected error occurred while attempting to send email.';
        localizedErrMap['email'] =          'Please enter your email address in name@email.com format.';
        localizedErrMap['birthday'] =       'Please enter birthday in MM/DD format.';
        localizedErrMap['anniversary'] =    'Please enter anniversary in MM/DD/YYYY format.';
        localizedErrMap['custom_date'] =    'Please enter this date in MM/DD/YYYY format.';
        localizedErrMap['list'] =           'Please select at least one email list.';
        localizedErrMap['generic'] =        'This field is invalid.';
        localizedErrMap['shared'] =         'Sorry, we could not complete your sign-up. Please contact us to resolve this.';
        localizedErrMap['state_mismatch'] = 'Mismatched State/Province and Country.';
        localizedErrMap['state_province'] = 'Select a state/province';
        localizedErrMap['selectcountry'] =  'Select a country';

        return localizedErrMap;
    }
);

做了这个requirejs-config.js

代码语言:javascript
复制
var config = {
    "shim": {
        "constantcontact": {
            "deps":["jquery", "localizedErrMap"],
            "depnames":["jQuery", "localizedErrMap"]
        }
    },
    "paths": {
        "localizedErrMap": "js/localizedErrMap",
        "constantcontact": "https://static.ctctcdn.com/h/contacts-embedded-signup-assets/1.0.2/js/signup-form"
    }

};

然后在页面中使用以下常量联系人形式调用它:

代码语言:javascript
复制
<script>
   require(["constantcontact"]);
</script>

他们的脚本抛出错误:

未定义的ReferenceError: localizedErrMap未定义

我不能修改他们的代码,因为它是离地的,我需要确保这个数组被传递到代码中。我做错了什么,如何确保数组被传递?

EN

回答 2

Stack Overflow用户

发布于 2017-07-28 09:34:36

您在shim中使用的shim数组不是RequireJS支持的东西。我能找到的唯一参考是在问题报告中,支持这样一个选项的人https://github.com/requirejs/requirejs/issues/1160#issuecomment-47681204,但这从来没有实现。

它看起来像constantcontact,它不是一个AMD模块,它希望在全球空间中找到一个符号localizedErrMap。一般来说,您有几种选择:

  1. 您可以在如何构建应用程序的过程中添加一个构建步骤,以便在define代码周围添加一个constantcontact调用,从而有效地将其转换为AMD-模块。wrapShim选项r.js对此非常有用。但是,您说您不能修改它,所以这个选项就不在表中了。
  2. 你可以故意泄露localizedErrMap。对于使用不是AMD库的库,这种泄漏有时是一个可行的解决方案。我宁愿避免它,但在某些情况下,它是无法避免的。
票数 1
EN

Stack Overflow用户

发布于 2017-07-28 10:04:29

我是通过将它添加到CMS页面的内联中来工作的。

代码语言:javascript
复制
        <script type="text/javascript">
            var localizedErrMap = {};
            localizedErrMap['required'] =       'This field is required.';
            localizedErrMap['ca'] =             'An unexpected error occurred while attempting to send email.';
            localizedErrMap['email'] =          'Please enter your email address in name@email.com format.';
            localizedErrMap['birthday'] =       'Please enter birthday in MM/DD format.';
            localizedErrMap['anniversary'] =    'Please enter anniversary in MM/DD/YYYY format.';
            localizedErrMap['custom_date'] =    'Please enter this date in MM/DD/YYYY format.';
            localizedErrMap['list'] =           'Please select at least one email list.';
            localizedErrMap['generic'] =        'This field is invalid.';
            localizedErrMap['shared'] =         'Sorry, we could not complete your sign-up. Please contact us to resolve this.';
            localizedErrMap['state_mismatch'] = 'Mismatched State/Province and Country.';
            localizedErrMap['state_province'] = 'Select a state/province';
            localizedErrMap['selectcountry'] =  'Select a country';
            var postURL = 'https://visitor2.constantcontact.com/api/signup';
        </script>
        <script>
            require(["jquery"], function($){
                $.getScript('https://static.ctctcdn.com/h/contacts-embedded-signup-assets/1.0.2/js/signup-form.js');
            });
        </script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45337087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档