2017-07-06 30 views
2

目前我有两个共享大量数据的Polymer组件。你可以在这里看到:在聚合物组件之间共享数据的任何方式?

<polymer-component1 
     series="{{series}}" 
     stackhelper={{stackhelper}} 
     stack={{stack}} 
     controls={{controls}} 
     camera={{camera}} 
     threed={{threed}} 
     scene={{scene}} 
     renderer={{renderer}}> 
</polymer-component1> 
<polymer-component2 
     stackhelper=[[stackhelper]] 
     stack={{stack}} 
     controls={{controls}} 
     camera={{camera}} 
     threed={{threed}} 
     scene={{scene}} 
     renderer={{renderer}} 
     guiobjects={{guiobjects}}> 
</polymer-component2> 

这现在工作得很好,但什么是共享数据的最佳做法?任何方式来共享两个组件之间的所有属性?

+2

终极版是相当不错的管理共享状态,并且可用聚合物绑定。 https://github.com/tur-nr/polymer-redux – danielx

回答

1

建议通过数据绑定共享数据,就像你在做什么一样。你可以分享任何财产,而不仅仅是字符串和数字。例如假设你有一个对象

JS

data = { 
    series: "", 
    stackhelper: "", 
    stack: "", 
    controls: "", 
    camera: "", 
    threed: "", 
    scene: "", 
    renderer: "", 
} 

您的代码可以写成这样。

HTML

<polymer-component1 data="{{data}}"></polymer-component1> 
<polymer-component2 data="{{data}}"></polymer-component2> 
+0

这将使html标签看起来更干净,但我认为它会少一些实际的。是的,因为我可以看到我的方法是好的和常见的。谢谢! – Rashomon

1

在聚合物2中,一个元素可以通过扩展它来继承属性。

class MyElementSubclass extends MyElement {...} 

或者你创建一个只有属性都需要的元素,然后这两个组件都扩展父级。你可以找到这个here向下滚动到扩展现有的元素

+1

但我需要分享组件之间属性的**值**。不只是属性或方法。不知道这是否会分享价值 – Rashomon

+1

哦,我猜是误解了你,但danielx是正确的,然后我通过使用redux来共享组件之间的状态:-) –