Javascript 聚合物-使用行为在元素之间共享对象?
是否可以使用行为在元素之间共享对象Javascript 聚合物-使用行为在元素之间共享对象?,javascript,polymer,polymer-1.0,Javascript,Polymer,Polymer 1.0,是否可以使用行为在元素之间共享对象 <script> selectedBehavior = { properties: { selected: Object } } </script> uncaughttypeerror:无法设置未定义的属性“choice”我用以下方法得到它: <script> selectedBehavior = { properties: { selected: {
<script>
selectedBehavior = {
properties: {
selected: Object
}
}
</script>
uncaughttypeerror:无法设置未定义的属性“choice”
我用以下方法得到它:
<script>
selectedBehavior = {
properties: {
selected: {
type: Object,
value: function() { return { choice: 'home'} }
}
}
}
</script>
selectedBehavior={
特性:{
选定:{
类型:对象,
值:函数(){return{choice:'home'}
}
}
}
似乎仅仅指定一个对象是不够的。我需要为object的值返回一个object。没有多大意义,因为在文档中我应该只能说foo:Object
。但是,也许这是一个特例,我把它当作一种行为
不幸的是,两个元素不能通过行为共享同一个obj.property。每个都有自己的实例 如果要在元素的不同实例之间共享对象,必须避免使用 因此,这应该如您所期望的那样起作用:
<script>
selectedBehavior = {
properties: {
selected: {
type: Object,
value: { choice: 'home'} }
}
}
}
</script>
selectedBehavior={
特性:{
选定:{
类型:对象,
值:{choice:'home'}}
}
}
}
看看github()中的my对象,它允许一个元素用一个键发布一个值,而另一个元素有多个实例订阅它并再次获取数据
它通过将实例保存在私有变量中来实现
(function(){
var private;
Polymer({element definition has access to private});
})();
您不需要使用行为在元素之间共享信息 您应该这样使用:
- 以声明方式并使用数据绑定:
然后使用mySharedInformation
,就像使用任何自定义元素的属性一样。设置它将更新代码中共享同一密钥的任何其他
的值
- 在纯javascript中:
阅读
var mysharedinfo=new Polymer.IronMeta().byKey('my-unique-key')代码>
写
newpolymer.IronMeta({key:'my unique key',value:mySharedInformation})代码>谢谢!这也行得通,但并没有达到我的目标……两个元素要共享选择。选择。当home
更改为其他内容时,更改不会反映在其他元素中。请确保使用this。设置(…)
API以修改对象!是的……我使用set
api来确保更新元素。我想这与本地dom和隔离有关。的文档不明确,所以我做了一些实验,它似乎没有按照我预期的方式工作(我不太记得这个问题,我认为这与更改值和将其传播到所有查询元素有关)。我试着查看代码,它看起来非常复杂,我(最初)认为akc meta会简单得多。最后,它仍然更简单,但在我发现我必须处理从DOM分离的元素之后,就不那么简单了。我的动机只是一个概念的证明。投票支持最后一句话——刚才是通过艰苦的方式学会的。
<script>
selectedBehavior = {
properties: {
selected: {
type: Object,
value: { choice: 'home'} }
}
}
}
</script>
(function(){
var private;
Polymer({element definition has access to private});
})();