Polymer 如何构造聚合物水疗中心?

Polymer 如何构造聚合物水疗中心?,polymer,web-component,Polymer,Web Component,我是聚合物1.0的新手 我理解“一切都是元素”的哲学,但是,到什么程度? 如何将所有这些元素组合在一起 TL;DR:一般来说,聚合物和网络组件是否有与main()函数等价的函数?如果是,它应该在哪里,应该做什么 我通常会查看示例、演示和项目,以了解它应该如何工作,但由于聚合物是如此新(尤其是v1.0),我很难找到不平凡的示例 长版本 我知道如何使用聚合物来创造元素。 但当我想与他们接口时,我遇到了障碍。我应该使用什么结构使组件在它们之间进行通信 从一个角度来看,我对应该去哪里有一个相对精确的看法

我是聚合物1.0的新手

我理解“一切都是元素”的哲学,但是,到什么程度? 如何将所有这些元素组合在一起

TL;DR:一般来说,聚合物和网络组件是否有与main()函数等价的函数?如果是,它应该在哪里,应该做什么

我通常会查看示例、演示和项目,以了解它应该如何工作,但由于聚合物是如此新(尤其是v1.0),我很难找到不平凡的示例

长版本 我知道如何使用聚合物来创造元素。 但当我想与他们接口时,我遇到了障碍。我应该使用什么结构使组件在它们之间进行通信

从一个角度来看,我对应该去哪里有一个相对精确的看法。 例如:数据包含在可以从控制器、指令和html元素访问的范围内,您可以使用服务从应用程序的不同部分提取数据

在聚合物中,我不知道数据的边界在哪里。 不是在组件内部,而是在组件外部,组件所在的位置以及其他组件是否可以访问它。 一幅简单的画对我很有帮助。聚合物文档中没有解释这类事情,可能是因为它比聚合物更广泛

为了让大家了解我的问题,我遇到了以下几点:

  • 我建立了一个水疗中心
  • 我想用电线把它连接到消防基地
  • 我创建了自己的元素,它本身使用

    
    使用facebook登录
    注销
    聚合物({
    是:'我的登录',
    特性:{
    successRedirect:字符串
    },
    _errorHandler:函数(e){
    控制台日志(如详细信息);
    },
    _loginHandler:函数(e){
    if(this.successRedirect){
    //如何让pagejs重定向我?
    app.route=this.successRedirect;
    }
    }
    });
    
  • 基本上,我如何告诉pagejs(我的路由库)在成功登录后将应用重定向到页面?我的pagejs配置保存在它自己的routing.html文件中,我不知道如何将所有这些拼凑在一起

    我希望有人能理解这个广泛的问题,并希望能帮助我


    谢谢

    简短回答:活动听众。在路由器上放置一个事件侦听器。让登录处理程序在路由器上触发事件。路由器将拾取该事件,然后重定向

    ...
    _loginHandler: function(e){
      if(this.successRedirect){
        // How can I tell pagejs to redirect me ?
        var router = document.querySelector('router');
        router.dispatchEvent(new Event('redirect', {redirectURL: this.successRedirect});
        app.route = this.successRedirect;
      }
    }
    ...
    
    然后在路由器中:

    connectedCallback() {
      this.addEventListener('redirect', function(event) {
        var url = event.redirectURL;
        // Redirect using the router's API.
      });
    }
    

    我写了一篇关于使用聚合物建造水疗中心的广泛文章:。它基于0.5元素,但其思想和结构是通用的。感谢@ebidel,这是我一直在寻找的文章。不过,将其移植到Polymer 1.0会有所帮助,因为有很多不兼容的更改。我也理解“少写javascript”这件事。但有时你不得不在组件之间加入一些逻辑。我还不太清楚这个逻辑属于哪里。
    connectedCallback() {
      this.addEventListener('redirect', function(event) {
        var url = event.redirectURL;
        // Redirect using the router's API.
      });
    }