我正在构建一个使用Polymer Elements的网站(不是单页面应用程序) . 网站"app"不包含在 <dom-module>
中,但我仍然想要使用 <app-route>
元素 .
如果不创建包含整个站点的自定义"app-element",我怎么能这样做(我尝试将它全部放入 <dom-module>
但是有很多错误)?
如果我只是在 <body>
标签内使用 <app-route>
和 <app-location>
,我会得到一个
Uncaught TypeError: Cannot read property 'length' of undefined
即使我尝试以编程方式绑定路由/数据/尾部属性而不是使用例如 route="{{route}}"
.
1 回答
不在另一个Polymer托管元素的上下文中的聚合物元素从浏览器的角度看作自定义标记 . 它们中的每一个都是封装的,并且具有各自独立的内部上下文,并且除了通过发送事件之外,设计元素不与外部上下文交互 .
Polymer实现了一个中介模式,因此元素不会直接通信,即使它可能看起来如此,但是有各种各样的观察者设置了隐含的内容 . 因此,为了实现这种通信实际发生,您需要确保您的元素包含在某种Polymer管理的元素中 - 在您的情况下可能由Kuba Šimonovský
dom-bind
辅助元素指出 .如果由于某种原因你不想使用该元素,你可以为你的元素实现自己的事件驱动的中介(不是真的推荐) .