使用类作为dart聚合物元素的属性

时间:2014-08-31 16:29:22

标签: dart polymer

我有一个聚合物元素,需要从Web服务加载一些数据。

<gallery-pol loader=""></gallery-pol>

@CustomTag('gallery-pol')
class PolymerGallery extends PolymerElement {
  @published GalleryDataLoader loader;
  ...
}

我不想在我的聚合物元素中实现数据加载,因为它不应该被修复到特定的Web服务。

将实现实际数据加载的对象传递给聚合物元素的最佳方法是什么?

我应该只在主程序中选择我的元素并将加载器分配给元素吗? 或者是否有一些扼杀方式直接将其作为属性传递?

谢谢你, lolsharp

1 个答案:

答案 0 :(得分:2)

我会考虑将加载器建模为自定义元素。从那里你可以选择如何沟通。

一个是让画廊在小时候找到装载者:

<z-gallery>
  <z-gallery-loader></z-gallery-loader>
</z-gallery>

元素也可以通过查询/ ids或绑定找到对方:

<z-gallery-view>
  <z-gallery-loader id="loader"></z-gallery-loader>
  <z-gallery loader="{{ $['loader'] }}"></z-gallery>
</z-gallery-view>
$[] Polymer元素上下文中的

<z-gallery-view>按id查找内容。您还可以绑定到id字符串并自己执行查询:

<z-gallery-view>
  <z-gallery-loader id="loader"></z-gallery-loader>
  <z-gallery loader="loader"></z-gallery>
</z-gallery-view>

另一种方法是通过事件进行沟通:

<z-gallery-loader on-load-gallery="{{ loadGallery }}">
  <z-gallery></z-gallery>
</z-gallery-loader>

<z-gallery>可以触发加载图库&#39; (或者可能是一些更多的用户操作中心事件)自定义事件来请求加载数据,并且由于它被包括作为事件的目标,加载器可以做它并将数据推回去到画廊。

如果您不想要那里的包含关系,您可以通过在驱动程序上触发事件的不同父元素来重定向事件:

<z-gallery-view on-load-gallery="{{ loadGallery }}">
  <z-gallery-loader></z-gallery-loader>
  <z-gallery></z-gallery>
</z-gallery-view>

在这种情况下,loadGallery委托给loader子。