我想擴展一個knockout組件的功能。我已經在相關的xml檔案中添加了配置:
<arguments>
<argument name="jsLayout"/span> xsi: type="array">
<item name=" components" xsi: type="array">
...
<item name="example">/span> ...
... 該組件的其他屬性
<item name="config"/span> xsi: type="array">
<item name="SomeConfigVariable"/span> xsi: type="string">true</item>
</item>/span>
</item>/span>
...
</item> ...
</argument>>
</arguments>
我使用我的模塊requirejs-config.js包含了這個混合器,我可以看到它在我的瀏覽器中遇到了一個斷點。
var config = {
config: {
mixins: {
"Magento_MODULE/js/view/example"/span>: {
"VENDOR_MODULE/js/view/example-mixin"。true,
}
},
},
};
define(["ko"/span>], function (ko) {
var mixin = {
imports: {
someConfigVariable: "${ $.SomeConfigVariable }", //似乎沒有做什么。
},
initialize: function () {
this.someConfigVariable = false; //默認值.
this._super()。
return this。
},
};
return function (target, config) { // config是未定義的。
return target.extend(mixin)。
};
});
我錯過了什么?
我錯過了什么?
uj5u.com熱心網友回復:
mixin的代碼并不是嚴格意義上的必需品。像這樣把它設定為默認值:
define(["ko"/span>], 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"/span> xsi: type="array">
<item name=" components" xsi: type="array">
...
<item name="example">/span> ...
... 該組件的其他屬性
<item name="config"/span> xsi: type="array">
<item name="SomeConfigVariable"/span> xsi: type="boolean">true</item> < ! --注意xsi:型別為布爾 -->
</item>/span>
</item>
...
</item> ...
</argument>>
</arguments>
運行該組件時,我得到了想要的結果。在執行initConfig方法之前,Magento對config元素進行了一些處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/320563.html
標籤:
