-1
有什麼辦法可以從slot
'ed元素執行方法嗎?我正在創建一個包含保存按鈕的模板。理想情況下,模板應該在他自己的保存按鈕被點擊時調用開槽內容(子)。保存方法。任何想法如何實現這一目標?聚合物2中的模板,如何獲取槽元素的上下文?
我已經試過以下模板:
<dom-module id="template-action-bar">
<template>
<style include="granite-bootstrap"></style>
<slot id="slot"></slot>
<div class="container flex-end-justified">
<button
hidden$=[[_isNotFn('next')]]
disabled$="[[!valid]]"
class="btn btn-primary"
on-click="_next"
>
Next (Save)
</button>
<button
hidden$=[[_isNotFn('back')]]
disabled$="[[!valid]]"
class="btn btn-primary"
on-click="_back"
>
Back (Undo)
</button>
</div>
</template>
<script>
class TemplateActionBar extends Organism {
static get is() {
return 'template-action-bar';
}
static get properties() {
return {
next: Function,
back: String
};
}
_isNotFn(fn) {
return this[fn] !== 'function';
}
_next() {
this.next();
}
_back() {
this.$.slot.undo();
}
}
window.customElements.define(TemplateActionBar.is, TemplateActionBar);
</script>
而且元素(它的短版):
<dom-module id="element-creation">
<template>
<template-action-bar
next="{{ save }}"
>
<!-- ....... -->
</template>
<script>
class ElementCreation extends Organism {
/* ****************** */
save() {
// FIRST ATTEMPT
console.log(this); // <- I want the scope of ElementCreation not template-action-bar
}
save() {
// SECOND TRY
return (function() {
console.log(this); // <- I want the scope of ElementCreation not template-action-bar
}());
}
}
window.customElements.define(ElementCreation.is, ElementCreation);
</script>
</dom-module>
你嘗試過什麼你有一個特定代碼相關的問題 – Script47
我已經發布了一個例子希望它可以幫助: ) – aemonge