0

我正在构建一个使用 Polymer Elements 的网站(不是单页应用程序)。网站“app”不包含在 a 中<dom-module>,但我仍然想使用该<app-route>元素。

在不创建包含整个站点的自定义“应用程序元素”的情况下如何做到这一点(我尝试将其全部放入 a<dom-module>但出现大量错误)?

如果我只是在标签内使用<app-route>and ,我会得到一个<app-location><body>

Uncaught TypeError: Cannot read property 'length' of undefined

即使我尝试以编程方式绑定 route/data/tail 属性而不是使用 eg route="{{route}}"

4

1 回答 1

0

从浏览器的角度来看,不在另一个 Polymer 托管元素的上下文中的 Polymer 元素仅被视为自定义标签。它们中的每一个都被封装并具有自己独立的内部上下文,并且设计元素除了通过发送事件之外不与外部上下文交互。

Polymer 实现了一种中介模式,因此即使看起来如此,元素也不会直接通信,而是设置了各种观察者。因此,要使这种通信真正发生,您需要确保您的元素被包裹在某种聚合物管理的元素中——在您的情况下,这可能是Kuba Šimonovský所指出的一个dom-bind辅助元素。

如果出于某种原因您不想使用该元素,您可以为您的元素实现自己的事件驱动调解器(不推荐)。

于 2017-11-15T21:35:49.320 回答