Questions tagged «requirejs»

表示与要求JS有关的问题。RequireJS是一个JavaScript文件和模块加载器。它针对浏览器内使用进行了优化,但可以在其他JavaScript环境中使用。

5
如何在所有页面的前端添加JS文件
我已经阅读了3页的Google搜索结果,了解如何为所有页面加载JS文件,但仍然无法执行。 我有一些疑问,希望有人可以解决。 我需要创建一个模块里面app/code用requirejs-config.js?或者我可以requirejs-config.js在主题内部放一个? 我应该放什么东西requirejs-config.js? 代码在我的.js文件中应该是什么样?我看到您不能使用jQuery,document.ready并且必须有一个define([ 我应该放什么东西define([? 如果我有第三方jQuery模块,是否需要对其进行编辑以使其正常工作? 我是否需要将xml放在某处以告诉magento my.js文件存在? 如果我在app/code其中创建了一个包含所有js代码的模块,那么它将包含所有页面中的所有内容吗?我该如何实现?

2
在Magento 2中扩展/覆盖JS
由于Magento2使用RequireJS加载脚本,并且不再有皮肤文件夹,所以我遇到了一个问题: 如何用修改后的版本替换Magento的模块JS文件? 例如,属于Magento_Checkout扩展名的opc-checkout-method.js。据我所知,它没有在requirejs-config.js文件中定义。 我的扩展名在Magento_Checkout之后加载,因此其requirejs-config.js数据附加在生成的requirejs-config文件的末尾。 还是应该以其他方式执行此操作而不替换整个脚本?

4
Magento 2:主题中的requirejs-config.js?
是否可以requirejs-config.js通过Magento主题包含文件(或以其他方式配置RequireJS)?还是保留了Magento模块的功能?到目前为止,关于主题结构的开发文档信息尚不明确。 开发人员文档未提及有关RequireJS的任何内容-但是,主题确实包含,web这意味着javascript可以与它们捆绑在一起。如果javascript可以与主题捆绑在一起,则意味着RequireJS模块可以与主题捆绑在一起,如果RequireJS模块可以与主题捆绑在一起,则该模块可能需要特定的RequireJS配置。 我天真地假设主题将具有这种功能,但是我无法以这种方式找到任何文档,也没有一个下午可以花时间在Magento的requirejs-config.js文件上进行必要的代码拼写,包括。

1
Magento 2如何应用KnockoutJS绑定
根据对KnockoutJS文档的粗略阅读,初始化一个非常基本的Knockout视图如下所示 // This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI function AppViewModel() { this.firstName = "Bert"; this.lastName = "Bertington"; } // Activates knockout.js ko.applyBindings(new AppViewModel()); 即-您创建一个旨在用作对象构造函数的javascript函数,实例化该对象,然后将该对象传递到ko.applyBindings全局剔除对象(ko)的方法中 但是,在Magento 2中,如果您使用Grid UI加载后端页面,则Magento将初始化js/core/app.jsRequireJS模块 /** * Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for …

1
Magento2-如何扩展jQuery小部件(configurable.js)
我正在创建一个扩展,用属性名称替换默认的可配置选项标签“选择选项...”,例如“选择颜色...”。 如何扩展(而不是覆盖!)jQuery小部件configurable.js并仅修改此行? 我从文档中知道可以覆盖jQuery小部件,因此我做到了: define([ 'jquery', 'jquery/ui', 'configurable' // usually widget can be found in /lib/web/mage dir ], function($){ $.widget('silvan.configurable', $.mage.configurable, { }); return $.silvan.configurable; }); 如何初始化该文件?我应该通过requirejs-config加载它吗?地图功能仅适用于覆盖吗? 是否只能修改此行?从此函数调用: _fillSelect: function (element) {}

3
UI组件文件中的“源”项目是什么
在Magento 2的UI表单组件配置文件中,您经常会item在下面看到与source- 相同的属性<item name="source" xsi:type="string">block</item>。 #File: vendor/magento/module-cms/view/adminhtml/ui_component/cms_block_form.xml <field name="title"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="dataType" xsi:type="string">text</item> <item name="label" xsi:type="string" translate="true">Block Title</item> <item name="formElement" xsi:type="string">input</item> <item name="source" xsi:type="string">block</item> <item name="sortOrder" xsi:type="number">20</item> <item name="dataScope" xsi:type="string">title</item> <item name="validation" xsi:type="array"> <item name="required-entry" xsi:type="boolean">true</item> </item> </item> </argument> </field> 这些字段是做什么用的?我问,因为似乎没有必要。例如,此GitHub存储库中的模块 配置了一个有效的UI组件表格,但未使用这些name="source"项目。 有人知道这些name="source"物品是干什么用的吗?我知道UI组件机制采用XML并将其配置为x-magento-initJSON "block_id": { …

1
为什么Magento 2使用RequireJS`map`而不是`path`
在Magento 2的RequireJS实现中,许多核心模块都使用类似这样的配置 map: { '*': { editTrigger: 'mage/edit-trigger', addClass: 'Magento_Translation/add-class' } } 在RequireJS中,map配置指令允许开发人员告诉RequireJS 加载模块X并使用模块Y时,请用模块Z替换模块Y- 但仅适用于模块X 或者,在代码中 map: { 'modulex':{ 'moduley':'modulez' } } 该map功能基本上允许您通过配置交换模块定义-用Magento来说,它是javascript的模块重写功能。 不过,我不清楚Magento大量使用物业*的钥匙map。 map: { '*': { editTrigger: 'mage/edit-trigger', addClass: 'Magento_Translation/add-class' } } 所述*基本上说*为做到这一点映射所有模块,以及其预期用途的情况下是是提供一个基本模块的混叠,可以更具体的模块被改变。 但是,Magento似乎用它代替了RequireJS的pathsproperty。即似乎Magento可以通过以下方法实现相同的目的 paths: { 'editTrigger': 'mage/edit-trigger', 'addClass': 'Magento_Translation/add-class', } 然后在需要时有选择地进行特定映射。 有谁知道为什么Magento选择map:*路径别名作为其方法?即-是我对map与path不完整的区别的理解-还是这是“一件六件,另一件六件”的事情之一。还是Magento通过这种方式获得一些额外的行为。 不要求解决特定问题,而是在开始撰写有关它的要求之前澄清对RequireJS和Magento实现的误解:)

6
Magento2不读我的requirejs-config.js
嗨,我是Magento2的新手,试图弄清楚RequireJS在Magento中的工作方式。 这是我的情况: 我有以下模块: app/code/Mymodule/Test/view/frontend/requirejs-config.js 这是此文件的内容: var config = { map: { '*': { jQuery110: "Mymodule_Test/js/jquery-1.10.2", jqueryNoConflict: 'Mymodule_Test/js/jquery.no-conflict', flexslider: 'Mymodule_Test/js/jquery.flexslider-min', header: 'Mymodule_Test/js/store/header' } } }; 我的主题在这个位置: app/design/frontend/Mycompany/Basic 我的Javascript位于以下位置: app/code/Mymodule/Test/view/frontend/web/js/jquery.no-conflict.js app/code/Mymodule/Test/view/frontend/web/js/jquery.flexslider-min.js app/code/Mymodule/Test/view/frontend/web/js/store/header.js 在PHTML文件中: app/code/Mymodule/Test/view/frontend/templates/home.phtml 我添加了以下行: require(['jqueryNoConflict', 'flexslider'],function($, flexslider){ (function($) { $(window).load(function () { $('.flexslider').flexslider(); }); })(jQuery); }); 当我在浏览器中检查页面时,出现404错误,并显示以下路径: http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js 但是,如果我将require []行更改为此: require(['Mymodule_Test/js/jquery.no-conflict', …

2
Magento 2所谓的“ mixins”是如何实现的?
Magento 2的基于RequireJS的对象系统包含一个称为“ mixins”的功能。Magento 2 mixin不是软件工程师通常认为的mixin / trait。相反,Magento 2 mixin允许您在主程序使用该对象/值之前修改RequireJS模块返回的对象/值。您可以这样配置Magento 2混合(通过requirejs-config.js文件) var config = { 'config':{ 'mixins': { //the module to modify 'Magento_Checkout/js/view/form/element/email': { //your module that will do the modification 'Pulsestorm_RequireJsRewrite/hook':true } } } }; 然后,您需要拥有hook.js(或您配置的任何RequireJS模块), define([], function(){ console.log("Hello"); return function(theObjectReturnedByTheModuleWeAreHookingInto){ console.log(theObjectReturnedByTheModuleWeAreHookingInto); console.log("Called"); return theObjectReturnedByTheModuleWeAreHookingInto; }; }); 返回一个函数。Magento将调用此函数,并传递对要修改的“模块”的引用。在我们的示例中,这将是RequireJS模块返回的对象Magento_Checkout/js/view/form/element/email。这也可能是一个函数,甚至是一个缩放器值(取决于RequireJS模块返回的值)。 该系统似乎已被调用,mixins因为如果原始RequireJS模块返回的对象支持该extend方法,则它允许您创建类似混合的行为。 define([], …

1
Magento2:如何覆盖核心js模块price-box.js
我需要扩展Magento_Catalog/js/price-box.js。我已经使用了“ mixins”功能,但不适用于price-box.js。 requirejs-config.js: var config = { config: { mixins: { 'Magento_Catalog/js/price-box': { 'My_Module/js/price-box/pluggin': true } } } }; My_Module/view/frontend/web/js/price-box/pluggin.js define(function () { 'use strict'; return function (target) { // modify target var reloadPrice = target.reloadPrice; target.reloadPrice = function() { cosole.log("hello"); }; return target; }; });


7
更改Magento 2.1.0中的“添加到购物车”按钮文本(覆盖js文件)
我已通过覆盖“ vendor\magento\module-catalog\view\frontend\templates\product\list.phtml” 将“添加到购物车”文本更改为“我想要这个”。 但是,当我单击“我想要这个”(即“添加到购物车”)按钮时,该产品即被添加到购物车,然后按钮上再次出现“添加到购物车”文本。 我认为产品是通过ajax调用添加的,这就是为什么在ajax调用后未显示新添加的文本并且显示“添加到购物车”文本的原因。 我已经试过了 我创建了一个自定义扩展Ved_Mymodule。 我已检查该扩展程序是否处于活动状态。 之后,我按照以下步骤操作: 应用程序/代码/Ved/Mymodule/view/frontend/requirejs-config.js: var config = { map: { '*': { catalogAddToCart:'Ved_Mymodule/js/customCatalogAddToCart' } } }; 应用/代码/Ved/Mymodule/view/frontend/web/js/customCatalogAddToCart.js: define([ 'jquery', 'mage/translate', 'jquery/ui' ], function($, $t) { "use strict"; $.widget('Ved_Mymodule.customCatalogAddToCart',$.mage.catalogAddToCart, { //Override function disableAddToCartButton: function(form) { var addToCartButtonTextWhileAdding = this.options.addToCartButtonTextWhileAdding || $t('Adding...'); var addToCartButton = $(form).find(this.options.addToCartButtonSelector); …

1
如何在UI组件之间共享Knockout JS可观察对象
我了解如何使用imports: {}和exports: {}共享UI组件属性,例如: defaults: { exports: { shouldShowMessage: '${$.component}' } } 它在导出中返回组件名称。 但是,当我尝试导出可观察到的淘汰赛时,它始终是未定义的: defaults: { exports: { shouldShowMessage: '${$.shouldShowMessage}' } } ... setupKoBindings: function() { this.shouldShowMessage = ko.observable('Testing'); } 作为一种解决方法,我将按照此处的说明创建一个存储模型,但是我更喜欢使用导入和导出。

3
JS错误Magento 2
我一直在努力完成一些事情,并在整个周末内将其发布在网上,这有些破破烂烂,我也不知道为什么要这么做,所以我希望有人能帮助我。 我尝试将自定义jQuery添加到我的自定义主题中,并成功加载了jQuery并且该函数正在运行。然而!它无法正常运行。例如,Safari无法加载jQuery,并且我在控制台中不断出现这些错误: defaultCaptcha.js:29未捕获的TypeError:无法读取未定义身份验证的属性“验证码” -popup.js:26未捕获的TypeError:无法读取未定义的属性“自动完成”(匿名函数) 我以为这与我声明jQuery的方式有关,但是当情况并非如此时,我决定删除所有自定义JS,但仍然出现这些错误。我猜似乎有些东西要打破了。 我的自定义“主题”只是一个简单的登录页面,无非我的自定义订阅框。 什么会导致这些错误?

1
Requirejs垫片选项不起作用
我正在为Magento2开发一个模块,并且正在使用requirejs加载依赖于jquery的自定义javascript。我在requirejs-config.js中使用shim选项在自定义脚本和jquery之间设置此依赖关系。问题是未(始终)设置此依赖项。有时jQuery确实会在脚本之前加载,并且一切都很好,但有时会在脚本之后加载,从而导致脚本错误: Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.easing.1.3.js:39 Uncaught ReferenceError: jQuery is not defined(anonymous function) @ jquery.flexslider-min.js:5 Uncaught TypeError: $(...).flexslider is not a function 参见下面我的requirejs-config.js的示例: var config = { map: { '*': { 'flexslider': 'Vendor_Modulejs/jquery.flexslider-min', 'picturefill': 'Vendor_Modulejs/picturefill.min', 'easing': 'Vendor_Modulejs/jquery.easing.1.3', 'hoverintent': 'Vendor_Modulejs/jquery.hoverIntent', 'fitvids': 'Vendor_Modulejs/jquery.fitvids', 'vimeo': 'Vendor_Modulejs/jquery.vimeo.api.min' } }, shim: …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.