Magento 从 mixin 访问 jsLayout 配置数据
Magento accessing jsLayout config data from a mixin
我想扩展一个敲除组件的功能。我已将配置添加到有问题的 xml 文件中:
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
...
<item name="example">
... other properties of the component
<item name="config" xsi:type="array">
<item name="SomeConfigVariable" xsi:type="string">true</item>
</item>
</item>
...
</item>
</argument>
</arguments>
我已经使用我的模块包含了 mixin requirejs-config.js
,我可以看到它在我的浏览器中遇到了断点。
var config = {
config: {
mixins: {
"Magento_MODULE/js/view/example": {
"VENDOR_MODULE/js/view/example-mixin": true,
}
},
},
};
但是我似乎找不到获取配置数据所需的代码,我试过这个:
define(["ko"], function (ko) {
var mixin = {
imports: {
someConfigVariable: "${ $.SomeConfigVariable }", // Doesn't seem to do anything
},
initialize: function () {
this.someConfigVariable = false; // Default value
this._super();
return this;
},
};
return function (target, config) { // config is undefined
return target.extend(mixin);
};
});
我错过了什么?
mixin 代码不是严格必需的。像这样将其设置为默认值:
define(["ko"], function (ko) {
var mixin = {
defaults: {
someConfigVariable: false,
},
initialize: function () {
this._super();
return this;
},
};
return function (target) {
return target.extend(mixin);
};
});
并更新布局 xml 如下所示:
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
...
<item name="example">
... other properties of the component
<item name="config" xsi:type="array">
<item name="SomeConfigVariable" xsi:type="boolean">true</item> <!-- Note the xsi:type as boolean -->
</item>
</item>
...
</item>
</argument>
</arguments>
当 运行 组件时得到我想要的结果。 Magento 在点击 initConfig
方法之前对 config
元素做了一些魔术。
我想扩展一个敲除组件的功能。我已将配置添加到有问题的 xml 文件中:
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
...
<item name="example">
... other properties of the component
<item name="config" xsi:type="array">
<item name="SomeConfigVariable" xsi:type="string">true</item>
</item>
</item>
...
</item>
</argument>
</arguments>
我已经使用我的模块包含了 mixin requirejs-config.js
,我可以看到它在我的浏览器中遇到了断点。
var config = {
config: {
mixins: {
"Magento_MODULE/js/view/example": {
"VENDOR_MODULE/js/view/example-mixin": true,
}
},
},
};
但是我似乎找不到获取配置数据所需的代码,我试过这个:
define(["ko"], function (ko) {
var mixin = {
imports: {
someConfigVariable: "${ $.SomeConfigVariable }", // Doesn't seem to do anything
},
initialize: function () {
this.someConfigVariable = false; // Default value
this._super();
return this;
},
};
return function (target, config) { // config is undefined
return target.extend(mixin);
};
});
我错过了什么?
mixin 代码不是严格必需的。像这样将其设置为默认值:
define(["ko"], function (ko) {
var mixin = {
defaults: {
someConfigVariable: false,
},
initialize: function () {
this._super();
return this;
},
};
return function (target) {
return target.extend(mixin);
};
});
并更新布局 xml 如下所示:
<arguments>
<argument name="jsLayout" xsi:type="array">
<item name="components" xsi:type="array">
...
<item name="example">
... other properties of the component
<item name="config" xsi:type="array">
<item name="SomeConfigVariable" xsi:type="boolean">true</item> <!-- Note the xsi:type as boolean -->
</item>
</item>
...
</item>
</argument>
</arguments>
当 运行 组件时得到我想要的结果。 Magento 在点击 initConfig
方法之前对 config
元素做了一些魔术。