Используйте глобальную переменную в Polymer dom-if - PullRequest
1 голос
/ 10 апреля 2019

Я создаю пользовательский модуль для Polymer.Мне нужно создать глобальную переменную, к которой можно получить доступ при определении шаблона.Что-то вроде:

<template is="dom-if" if="[[_check(myGlobalVar.foo)]]">

Глобальная переменная также должна быть напрямую доступна изнутри модуля (см. _AnotherFunction).Файл JS выглядит следующим образом:

Polymer({
    is: 'my-module',

    _check(f) {
        return f == 'foobar'
    },

    _anotherFunction() {
        console.log(myGlobalVar)
    }
})

Кроме того, myGlobalVar должен быть доступен из других модулей в других файлах.Какой лучший способ создать его?

Ответы [ 2 ]

0 голосов
/ 14 апреля 2019

Для этого есть специальный полимерный элемент.

iron-meta - это общий элемент, который вы можете использовать для обмена информацией. через дерево DOM.

https://www.webcomponents.org/element/@polymer/iron-meta

Элемент запускает value-changed, если значение было изменено, поэтому вам, вероятно, нужно установить значения для него.


Однако мы не используем его в нашей компании, а просто сохраняем значение в памяти, а затем отправляем событие всякий раз, когда мы устанавливаем значение. Также добавляем прослушиватель для каждого элемента, который должен прослушивать обновления.

0 голосов
/ 11 апреля 2019

Вы можете достичь этого двумя способами.

  1. Имеет компонент, который может содержать все глобальные переменные и дает один и тот же экземпляр своих данных, где бы он ни использовался. Вы можете найти лучшее объяснение, используя ссылку вместе с рабочим образцом

  2. Если у вас есть много данных, которые должны быть доступны во всем мире, то лучшим вариантом будет использование магазина с полимер-редуксом.

...