如何使用app-route在polymer 3中实现路由

2023-12-02

我一直坚持在 Polymer 3 中实现路由。我遵循了应用程序路由文档。但是在加载网页时,我没有看到任何组件被加载。我签到了shadow DOM并且没有看到任何 DOM 被渲染。不知道我错过了什么。这是代码。

static get properties() {
      return {
      page:{
        type: String,
        reflectToAttribute: true,
        observer: '_pageChanged'
      }
      };
    }
    _pageChanged(currentPage, oldPage){
    	  console.log('CURRENT - ', currentPage);
    	  console.log('OLD - ', oldPage);
    	  switch(currentPage){
    		  case 'home':
    			import('./home-comp.js').then()
    			break;
    		case 'about':
    			import('./about-comp.js').then()
    			break;
    		case 'contact':
    			import('./contact-comp.js').then()
    			break;
    		default:
    			this.page = 'home';
    	  }
      }
<app-route
          route="{{route}}"
          pattern="/:page"
          data="{{routeData}}"
          tail="{{subroute}}">
</app-route>

<home-comp name="home"></home-comp>
<about-comp name="about"></about-comp>
<contact-comp name="contact"></contact-comp>

我没有看到很多关于 Polymer 3 的文档可用于检查问题。在浏览了 Polymer 默认示例 Web 应用程序 shop. 后,我遇到了一些合适的解决方案。我想与社区分享它,供任何需要帮助的人使用。


你需要有

应用程序路由:用于实现路由

铁页:基本上是页面切换器按需加载所需的组件

在应用程序路由中,

/* observer: Its a simple observer (basically a watch which holds current value & old value) that triggers whenever data changed in page property. We read the observer and calls a function to grab its earlier */

static get properties() {
  return {
  page:{
    type: String,
    reflectToAttribute: true,
    observer: '_pageChanged'
  }
  };
}
_pageChanged(currentPage, oldPage){
	  console.log('CURRENT - ', currentPage);
	  console.log('OLD - ', oldPage);
	  switch(currentPage){
		  case 'home':
			import('./home-comp.js').then()
			break;
		case 'about':
			import('./about-comp.js').then()
			break;
		case 'contact':
			import('./contact-comp.js').then()
			break;
		default:
			this.page = 'home';
	  }
  }
<!-- pattern: reads the href property., hence set the page (pattern="/:page") property in static get property to read its data -->

<app-route route="{{route}}" pattern="/:page" data="{{routeData}}" tail="{{subroute}}"></app-route>
	<ul>
	    <li>
		    <a href="/home">Home</a>
	    </li>
	    <li> 
          <a href="/about">About</a> 
      </li>
	    <li> 
          <a href="/contact">Contact</a> 
      </li>
	</ul>

但是第一次加载时,页面属性没有任何值并抛出异常undefined.

因此我们可以使用complex observer观察此类变化

static get observers(){
	return ['_routerChanged(routeData.page)'];
}
_routerChanged(page){
	console.log('CHANGED PAGE - ', page);
	this.page = page || 'home';
}

更改的路线数据不会加载组件,除非我们有iron-pages。它基本上是一个按需组件切换器/加载器。将所有组件包裹在main-app under <iron-pages>

<!-- selected: Data binding helps to get changed page value -->
<!-- attr-for-selected: It reads value of name attr defined in each component & matches with selected value and triggers page switch -->

<!-- fallback-selection: for 404., page/component not found handling -->

<iron-pages selected="[[page]]" attr-for-selected="name" selected-attribute="visible" fallback-selection="404">
		<home-comp name="home"></home-comp>
		<about-comp name="about"></about-comp>
		<contact-comp name="contact"></contact-comp>
</iron-pages>

这是使用 app-route 在 Polymer 3 中实现路由的完整指南。希望这可以帮助点击这里

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用app-route在polymer 3中实现路由 的相关文章

  • 浏览骆驼案例

    我正在使用 Eclipse 我希望可以通过按 STRG 在驼峰式书写的单词之间跳转 现在我正在使用 Sublime 但我找不到这样做的快捷方式 也找不到实现它的插件 下面的例子显示了我的问题 函数名 在 Eclipse 中它从a to th
  • 更改应用程序的语言而不更改设备的设置

    我正在制作一个 Android 应用程序 我想在微调器中选择特定语言时更改应用程序的语言 而不更改设备的语言 我为所有语言制作了不同的字符串文件 现在下一步该怎么办 有人可以帮我解决这个问题吗 谢谢 最简单的方法就是更改虚拟机的区域设置 例
  • 将日志刷新到磁盘,VerifyOSHandlePosition 中出现异常

    如何从 C 服务写入日志文件以便及时将其刷新到磁盘 这是我尝试过的 在记录代码中 我打开了一个如下文件 var file return File Open name FileMode Append FileAccess Write File
  • ARM v7 BKPT 指令在 Linux 2.6.35 上无法正常工作

    我遇到的问题是与 Linux 2 6 35 上的 ARM v7 上的 BKPT 指令连接 主要原因是故障指令 bkpt 的地址不正确 与ARM v7手册不对应 以下是重现步骤 将操作系统 SIGBUS 处理程序重新定义为我的 SIGBUS
  • 当属性名称的第二个字符是大写时抛出 javax.el.PropertyNotFoundException

    我有一个不寻常的场景 我有一个注册VO 其中有一些属性和吸气剂设置器 例如city or bCity用他们的 getter 方法getCity and getBCity 在 JSP 中 我尝试使用 scriplet 显示这些属性的值 和 r
  • 为什么我们不能添加带有整数的迭代器?

    我想通过迭代器打印集合的所有值 打印所有值后我想打印一个endl没有最后一个 这是我的代码 for set
  • Azure Key Vault 不允许通过专用终结点连接进行访问

    我有一个天蓝色的网络服务 linux 和天蓝色的密钥保管库 我配置了两个专用端点 以允许 Azure Key Vault 和 Azure Web 应用程序之间的通信 我设置了所有权限key vault s access policy 我已经
  • 如何在视图页面中的片段之间传递字符串

    我试图在 viewpager 中的两个片段之间传递一个字符串 但我没有找到正确的方法 到目前为止 这是我的代码 public class MyFragmentPagerAdapter extends FragmentPagerAdapter
  • grep -w 查找具有非拉丁字母的单词的部分匹配

    我想 grep 查找 er 的精确匹配 但是 grep w 除了精确匹配之外 还发现带有非拉丁字母 例如 的单词的部分匹配 下面的命令在 gro er 和 wei er 中查找 er 预期的行为是 grep 只找到下面字符串中 er 的精确
  • 越界访问数组有多危险?

    访问超出数组范围的数组 在 C 语言中 有多危险 有时可能会发生我从数组外部读取的情况 我现在知道我然后访问程序的其他部分甚至超出范围使用的内存 或者我尝试将值设置为数组外部的索引 程序有时会崩溃 但有时只是运行 只会给出意想不到的结果 现

随机推荐

  • Swift 中的数学解析器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我想知道 Swift 中是否有任何不错的数学解析器 也就是说 它可以取一个字符串并解决它 我需要它具有阶乘 指数 平方根和所有基本算术运算符 我希望
  • SQL 选择即将到来的生日

    我正在尝试编写一个存储过程来选择即将过生日的员工 SELECT FROM Employees WHERE Birthday gt Today AND Birthday lt Today NumDays 这不起作用 因为出生年份是生日的一部分
  • 错误:无法创建符号链接,致命:无法将索引文件重置为修订版“HEAD”

    我正在尝试硬重置git reset origin dev hard error unable to create symlink Codes Pods Headers Public libPhoneNumber iOS NBPhoneNum
  • onMouseMove 不会在 Chrome 中的

    假设我有一个 onMouseMove 监听器 它只记录鼠标的 x 和 y 位置 如果我展开一个选择元素并将鼠标移到暴露的元素上
  • 计算将一个矩形的点 1(x,y 坐标)转换为另一矩形的点 1(x,y)的比例因子

    将一个矩形的 x y 坐标缩放到其他矩形坐标的过程非常简单 此链接有更好的解释 http www icoachmath com math dictionary scale factor html 如果我们有两个矩形 其中一个的 Maxwid
  • 如何在javascript中实现螺旋迭代?

    以下是以螺旋方式排列圆圈的算法 遵循顺时针方向 以下是伪代码 总体 let dir 1 0 function checkIntersect c0 c1 const x0 y0 r0 c0 const x1 y1 r1 c1 return M
  • ng-admin 中路由末尾的斜杠

    是否可以在 ng admin 中所有路由的末尾添加斜杠 例如 http localhost api v1 users 代替http localhost api v1 users我用入门ng admin 应用程序 如果您想添加尾随 在 URL
  • Sprache中的递归表达式解析

    我正在构建一个 Sprache 解析器来解析类似于 SQL 搜索条件的表达式 例如Property 123 or Property gt AnotherProperty 到目前为止 这两个示例都有效 但是我正在努力弄清楚我需要做什么才能允许
  • javascript 数字数组中的奇数和偶数分隔

    我想按顺序将一个数组分成两组 奇数和偶数 但是当我尝试这个时 var arr 1 2 3 4 5 6 7 8 9 for var i 0 i lt arr length i if arr i 2 0 arr push arr splice
  • 如何在 Woocommerce 中的 woocommerce-account-fields 上方添加标题

    Preamble 我的问题与这个非常相似在这里问 我怀疑答案也将与这个答案非常相似here Scenario 结账页面显示典型的账单字段 下面是 div 类woocommerce account fields 其中是 div 类create
  • 提高 System.DirectoryServices.AccountManagement 的性能

    我有一个程序可以让我管理我们用来演示软件的终端服务器上的用户 我一直在尝试提高向系统添加用户的性能 它会添加主帐户 然后根据需要添加子帐户 例如 如果我有 Demo1 的用户和 3 个子用户 它将创建 Demo1 Demo1a Demo1b
  • 循环遍历某个范围内的每个工作簿

    我有一个工作簿 其中一列包含 Excel 工作簿文件路径和文件名 C D Folder1 File1 xls C D Folder2 File2 xls C D Folder3 File3 xls 每个文件及其文件路径都是从上面的目录中提取
  • 记录依赖树[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要记录 vb6 dotnet 应用程序中的程序集依赖项 哪些技术 工具适合执行此类文档 我本来打算使用 Visio 来绘图 作为开始 尝试依赖可
  • 初始化私有成员c#

    我有两个私有列表 需要在创建对象时初始化 第二个列表取决于第一个列表 我可以这样做吗 public class MyClass private List
  • Solr SuggestComponent 是否能够返回带状疱疹而不是整个字段值?

    我使用 solr 5 0 0 并希望创建一个自动完成功能 从我的文档的词元 或木瓦 中生成建议 问题是 作为建议查询的回报 我只能得到搜索字段的完整 术语 该术语可能非常长 当前问题 输入 否 建议 超长的文字so长文继续 下一篇长文so下
  • 阻止 Excel 自动将某些文本值转换为日期

    有谁知道是否有一个标记可以添加到我的 csv 中的某个字段 这样 Excel 就不会尝试将其转换为日期 我正在尝试从我的应用程序编写一个 csv 文件 其中一个值恰好看起来很像日期 Excel 会自动将其从文本转换为日期 我尝试将所有文 本
  • Pandas drop 函数在 for 循环中不起作用?

    全部 我对此感到非常困惑 并且我一生都无法找出错误 我试图遍历数据框中的所有字符串并删除不包含字符串 Barry Bonds 的字符串 到目前为止 我已经设法能够按索引删除行 bb db drop bb db index 1 这成功地删除了
  • 如何引用选定的散景数据点

    我创建了一个散景图 它使用圆形字形并具有 lasso select 工具 这是从 ipython 笔记本中运行的 当我查看该图 代表散点图 时 我选择显示为异常值的圆圈 是否有办法引用笔记本中选定的数据 我怀疑 source selecte
  • 使用 OAuth 的 Office 365 / EWS 身份验证

    我正在尝试使用 OAuth 和 EWS 托管 API 登录 Office 365 Exchange Online 我能够使用连接到 Office 365 Web API REST 因此我确实拥有来自 Active Directory 身份验
  • 如何使用app-route在polymer 3中实现路由

    我一直坚持在 Polymer 3 中实现路由 我遵循了应用程序路由文档 但是在加载网页时 我没有看到任何组件被加载 我签到了shadow DOM并且没有看到任何 DOM 被渲染 不知道我错过了什么 这是代码 static get prope