Что такое «поведение» аналога Polymer 1.x в полимере 3.x - PullRequest
0 голосов
/ 07 мая 2019

Я перевожу компонент поведения с Polymer 1.x на Polymer 3.x.Меня интересует, как перевести мой класс bevaior для использования в приложении Polymer 3.Ниже приведен код теста:

PermissionsBehaviour =
{
    ready: function ()
    {
        var _th = this;
        this._getRoles().then(function (d)
        {
            _th.set('perms_roles', d);          
        });
    },

    properties:
    {
         perms_roles: { type: Array, value: [] },          
    },

    _getRoles: function ()
    {
        return $.get(Global.Settings.RootWebUrl +                                                     
                       "Permission/GetUserRoles", function (result) { });
    }
}

1 Ответ

1 голос
/ 17 мая 2019

Вы можете определить это как mixin в Polymer 3: https://polymer -library.polymer-project.org / 3.0 / docs / devguide / custom-elements # defining-mixins

import {dedupingMixin} from '@polymer/polymer/lib/utils/mixin.js';

let internalMyMixin = function(superClass) {
  return class extends superClass {
    constructor() {
      super();
      this.addEventListener('keypress', (e) => this._handlePress(e));
    }

    static get properties() {
      return {
        bar: {
          type: Object
        }
      };
    }

    static get observers() {
      return [ '_barChanged(bar.*)' ];
    }

    _barChanged(bar) { ... }

    _handlePress(e) { console.log('key pressed: ' + e.charCode); }
  }
}

const MyMixin = dedupingMixin(internalMyMixin);
export {MyMixin as default};

А затем используйте миксин следующим образом:

import {MyMixin} from './my-mixin.js';

class Foo extends MyMixin(PolymerElement) { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...