从聚合物元素返回简单的值?

时间:2014-08-04 16:16:09

标签: javascript polymer

我已成功使用core-ajax传递json对象,但我想编写一个可以传递简单值的自定义元素。这就是我所拥有的,但它不起作用。

testOutput元素

<link rel="import" href="../polymer/polymer.html">
<polymer-element name="testOutput">
    <template>
        This doesn't do anything but output a value.
    </template>
    <script>
        Polymer('testOutput', {
            response: "MyValue"
        });
    </script>
</polymer-element>

testInput元素

<link rel="import" href="../polymer/polymer.html">
<polymer-element name="testInput" noscript attributes="input">
    <template>
        Here is the value from the other element:
        <h1>{{input}}</h1>
    </template>
</polymer-element>

的index.html

<testOutput response="{{output}}"></testOutput>
<testInput input="{{output}}"></testInput>

输出

  

除了输出值之外,它什么都不做。

     

以下是其他元素的值:

3 个答案:

答案 0 :(得分:1)

我只需在输出元素中发布响应变量。您可以通过将其包含在属性中或使用发布功能来完成此操作。

<polymer-element name="testOutput" attributes="response">

    Polymer('testOutput', {
        publish: {
            response: "MyValue"
        }
    });

答案 1 :(得分:0)

我认为您的回答应该是一个功能。

Polymer('testOutput', {
        response: function() { return "MyValue" };
    });

答案 2 :(得分:0)

我认为有两种方法可以做到这一点

第一种方式

您需要创建要获取数据的元素:     

<polymer-element name="first-element">
    <template>

    </template>
    <script>
    Polymer('first-element',{
        needPass: 'I am Passed'
    });
    </script>
</polymer-element>

需要使用querySelector获取第一个元素并获取数据

之后
<link rel="import" href="../../bower_components/polymer/polymer.html">

<polymer-element name="second-element">
    <template>
        <style>
            :host{
                width: 100%;
                height: 100%;
            }
        </style>
        <h1>{{passed}}</h1>
    </template>
    <script>
    Polymer('second-element',{

        passed: '',
        ready: function(){

            var first_el = document.querySelector('first-element');
            this.passed = first_el.needPass;
        }
    });
    </script>
</polymer-element>

将元素调用到索引

<first-element></first-element>
<second-element></second-element>

第二种方式

或者你可以将第一个元素调用到你的第二个元素

第一个元素:

<link rel="import" href="../../bower_components/polymer/polymer.html">

<polymer-element name="first-element" attributes="needPass">
    <template>

    </template>
    <script>
    Polymer('first-element',{
        needPass: 'I am Passed'
    });
    </script>
</polymer-element>

第二个元素

<link rel="import" href="../../bower_components/polymer/polymer.html">

<link rel="import" href="first-element.html">

<polymer-element name="second-element">
    <template>
        <style>
            :host{
                width: 100%;
                height: 100%;
            }
        </style>
        <first-element needPass="{{needPass}}"></first-element>
        <h1>{{needPass}}</h1>
    </template>
    <script>
    Polymer('second-element',{
        ready: function(){
        }
    });
    </script>
</polymer-element>

并仅调用索引第二个元素

我希望对你有所帮助。

PS:我测试了代码。