Polymer 将数据传递到另一个聚合物组分

Polymer 将数据传递到另一个聚合物组分,polymer,polymer-1.0,web-component,Polymer,Polymer 1.0,Web Component,我正在开发一个仪表板,其中顶部有一个搜索面板(我们称之为组件a),用户可以在其中输入查询。此输入的值将更改仪表板中的许多其他组件(不仅仅是作为其直接子代或同级的组件)。我想将搜索值从组件A发送到组件B,然后组件B应该通过使用输入值执行一些操作来响应 我试过几件事: 直接调用组件B中的函数。根本无法使其工作 手动设置B的本地属性值,并使用观察者触发函数调用。我使用管理器设置值,但观察者不触发 使用全局变量,我可以很容易地跨组件访问它,但我仍然不能在特定组件中触发函数 我怎样才能做到最好? 我对聚合

我正在开发一个仪表板,其中顶部有一个搜索面板(我们称之为组件a),用户可以在其中输入查询。此输入的值将更改仪表板中的许多其他组件(不仅仅是作为其直接子代或同级的组件)。我想将搜索值从组件A发送到组件B,然后组件B应该通过使用输入值执行一些操作来响应

我试过几件事:

  • 直接调用组件B中的函数。根本无法使其工作
  • 手动设置B的本地属性值,并使用观察者触发函数调用。我使用管理器设置值,但观察者不触发
  • 使用全局变量,我可以很容易地跨组件访问它,但我仍然不能在特定组件中触发函数
  • 我怎样才能做到最好? 我对聚合物比较陌生,所以如果我的想法没有完全“聚合”,请原谅我:)

    方法1

    <dom-module id="component-B">
      <template>
      </template>
      <script>
        Polymer({
          is: 'component-B',
          properties: {
            id: '',
            observer: '_idUpdate'
          },
          _idUpdate: function(){
            console.log("HELLO");
          }
        });
      </script>
    </dom-module>
    
    <dom-module id="component-A">
      <template>
      </template>
      <script>
        Polymer({
          is: 'component-A',
          idSearch: function() {
            var id = this.$.search.value;
            document.querySelector('component-B').properties.id = id;
          },
        });
      </script>
    </dom-module>
    
    
    聚合物({
    is:‘成分B’,
    特性:{
    id:“”,
    观察者:“\u idUpdate”
    },
    _idUpdate:函数(){
    console.log(“你好”);
    }
    });
    聚合物({
    是:‘A组分’,
    idSearch:函数(){
    var id=此.$.search.value;
    document.querySelector('component-B')。properties.id=id;
    },
    });
    
    当您想要将数据发送到多个元素(可能不是触发元素的同级元素)时,您可以使用这两种方法中的任何一种

    • 用于发射信号,然后在需要数据的所有元素中使用iron signal tag来监听信号

       <iron-signals on-iron-signal-<signal-name>="<function>"></iron-signals>
      
      
      
    • 您还可以使用标准HTML方法
      dispatchEvent
      发出信号,然后在需要数据的所有元素中添加
      eventListeners


    您可以添加一些代码吗?特别是你的方法1和2。这在理论上应该是可行的。你也可以看看。@Maria我添加了一个小片段。希望这足够了。我认为当前设置id属性值的方法是不可见的。但我不知道如何使设置可见,以便组件B中的观察者触发。