2016-05-11 107 views
2

有沒有辦法獲取自定義元素上所有綁定屬性名稱的列表,而不訴諸Polymer對象的屬性?列出聚合物中的自定義元素綁定

<custom-element foo="{{bar}}" baz="{{qux}}"></custom-element> 

上面應該有一個列表,綁定/屬性,價值:

["foo", "baz"]; 
+0

'[富,巴]'或'[富,巴茲]'? – winhowes

+0

'[foo,baz]'固定在OP –

+0

有趣的問題。出於好奇,爲什麼你需要這些信息? –

回答

1

你可以得到所有與element.properties聚合物元素上定義的屬性。

假設我們有以下Polymer定義:

Polymer({ 
    is: "x-element", 
    properties: { 
    foo:{ 
     type: Object 
    }, 
    baz:{ 
     type: Object 
    } 
    } 
}); 

而且它已經包含在HTML文件中:

<x-element id="x" foo="{{bar}}" baz="{{qux}}"></x-element> 

爲了讓我們可以做以下的propreties:

var xElemProperties = document.querySelector('#x').properties; 

這將包含所有的屬性。不需要在<x-element>上設置屬性值就可以找到。如果您只想獲取已在<x-element>上設置的屬性。您可以將.properties數組與「element.attributes」數組進行比較。 .attributes將包含在元素上設置的所有屬性。它也將包含id和其他類似的領域。

演示(窺視瀏覽器控制檯):

<!doctype html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <!---- > 
 
    <base href="https://polygit.org/components/"> 
 
    Toggle below/above as backup when server is down 
 
    <!----> 
 
    <base href="https://polygit2.appspot.com/components/"> 
 
    <script src="webcomponentsjs/webcomponents-lite.min.js"></script> 
 
    <link rel="import" href="polymer/polymer.html"> 
 
    <link rel="import" href="paper-button/paper-button.html"> 
 
</head> 
 
<body> 
 

 
<dom-module id="x-element"> 
 

 
    <template> 
 
    </template> 
 

 
    <script> 
 
    (function(){ 
 
     Polymer({ 
 
     is: "x-element", 
 
     properties: { 
 
      foo:{ 
 
      type: Object 
 
      }, 
 
      baz:{ 
 
      type: Object 
 
      } 
 
     } 
 
     }); 
 
    })(); 
 
    </script> 
 

 
</dom-module> 
 

 
<x-element id="x" foo="{{bar}}" baz="{{qux}}"></x-element> 
 
<x-element id="z"></x-element> 
 

 
<script> 
 
    var xElemProperties = document.querySelector('#x').properties; 
 
    console.log(xElemProperties); 
 
    var zElemProperties = document.querySelector('#z').properties; 
 
    console.log(zElemProperties); 
 
</script> 
 

 
</body>

+0

其中一個要求是必須事先不知道屬性名稱來收集屬性。所以在這種情況下,foo和baz可以被傳遞到,而沒有foo和baz被設置爲原型的屬性。 –

相關問題