Будет ли работать этот пользовательский элемент? Я снял это с Material Design Lite

1
    class CardElement extends HTMLElement {
    constructor() {
        super();

        let shadow = this.attachShadow({mode: open});

        let div = document.createElement('div');

        let div_main = div;
        div_main.className = "demo-card-square mdl-card mdl-shadow--2dp";
        shadow.appendChild(div_main);
        let div_sec = div;
        div_sec.className = "mdl-card__title mdl-card--expand";
        div_sec.style.background = this.getAttribute('src');
        shadow.appendChild(div_sec);
        let h2 = document.createElement('h2');
        h2.className = "mdl-card__title-text";
        h2.innerHTML = this.getAttribute('text');
        shadow.appendChild(h2);
        let div_three = div;
        div_three.className = "mdl-card__supporting-text";
        div_three.innerHTML = this.getAttribute('support-text');
        shadow.appendChild(div_three);
        let div_border = div;
        div_border.className ="mdl-card__actions mdl-card--border";
        shadow.appendChild(div_border);
        let anchor = document.createElement('a');
        anchor.className = "mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect";
        shadow.appendChild(anchor);
    }
}
customElements.define('card-element', CardElement);
}

Я попытался сделать компонент карты (https://getmdl.io/components/index.html#cards-section) в пользовательский элемент, такой как приведенный выше код. Но не удалось увидеть соответствующий результат. Любая помощь приветствуется, так как я только начал разрабатывать приложения для Интернета.

<card-element src="img.jpg" text="Inside" support-text="Can you see what I've done here!"></card-element>

И это показывает мне ошибку: Uncaught TypeError: Failed to execute 'attachShadow' on 'Element': The provided value 'function open() { [native code] }' is not a valid enum value of type ShadowRootMode. at new CardElement Uncaught TypeError: Failed to execute 'attachShadow' on 'Element': The provided value 'function open() { [native code] }' is not a valid enum value of type ShadowRootMode. at new CardElement

Можете ли вы дать мне понять, почему он не работает или как я должен решать эту проблему.

Теги:
material-design
shadow-dom
custom-element

1 ответ

1

Вы должны использовать простые или двойные кавычки с open в attachShadow():

let shadow = this.attachShadow({mode: "open"});
  • 0
    хорошо, это помогло, но только несколько компонентов, H2, div_border и якорь, видны в #shadowRoot
  • 0
    Посмотрите на этот ответ: stackoverflow.com/a/45922695/4600982

Ещё вопросы

Сообщество Overcoder
Наверх
Меню