我正在构建一个使用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}}"
。
答案 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);
}
}
辅助元素
如果出于某种原因你不想使用那个元素,你可以为你的元素实现你自己的事件驱动的中介(不是真的推荐)。