我想扩展一个knockout组件的功能。我已经将配置添加到所讨论的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>
我已经使用我的模块requirejs-config.js
包含了mixin,我可以看到它在我的浏览器中遇到了一个断点。
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);
};
});
我错过了什么?
1条答案
按热度按时间jljoyd4f1#
mixin代码并不是绝对必要的。将其设置为默认值,如下所示:
以及更新布局XML以如下所示:
在运行组件时得到我想要的结果。Magento在点击
initConfig
方法之前对config
元素做了一些魔法。