在应用程序外部使用Polymer <app-route>元素?

时间:2017-11-15 07:44:56

标签: polymer polymer-2.x polymer-elements app-route

我正在构建一个使用Polymer Elements的网站(不是单页应用)。该网站&#34; app&#34;不包含在<dom-module>中,但我仍想使用<app-route>元素。

如果不创建自定义&#34; app-element&#34;我怎么能这样做呢?包含整个网站(我尝试将其全部放入<dom-module>但是有很多错误)?

如果我只是在<app-route>标记中使用<app-location><body>,我就会得到

Uncaught TypeError: Cannot read property 'length' of undefined

即使我尝试以编程方式绑定路由/数据/尾部属性而不是使用例如route="{{route}}"

1 个答案:

答案 0 :(得分:0)

不在另一个Polymer托管元素的上下文中的聚合物元素从浏览器的角度看作自定义标记。 它们中的每一个都是封装的,并且具有各自独立的内部上下文,并且除了通过发送事件之外,设计元素不会与外部上下文交互。

Polymer实现了一个中介模式,因此元素不会直接进行通信,即使它可能看起来如此,但是有各种各样的观察者设置了隐含的内容。 因此,要实现这种通信实际发生,您需要确保您的元素包含在某种Polymer管理的元素中 - 在您的情况下可能由Kuba Šimonovský指出 foreach (IInstrument instrument in sortedList) { List<PageContent> instrumentPages = InstrumentPageMaker.InstrumentPage(signalReport, instrument, dataStore, prevDataStore, ref pageNum); foreach(PageContent pc in instrumentPages) { pc.Loaded += pc_Loaded; pc.GetPageRootCompleted += pc_GetPageRootCompleted; pc.Initialized += pc_Initialized; pc.LayoutUpdated += pc_LayoutUpdated; pc.ManipulationCompleted += pc_ManipulationCompleted; signalReport.Pages.Add(pc); } } 辅助元素

如果出于某种原因你不想使用那个元素,你可以为你的元素实现你自己的事件驱动的中介(不是真的推荐)。