新しい要素(tabs-list)内でペーパータブを使用しようとしていますが、タブを印刷した後、querySelectorを使用して選択したタブを変更することはできません。
要素コード(スタイルなし):
<link rel="import" href="../components/polymer/polymer.html">
<link rel="import" href="../sprint-service/sprint-service.html">
<link rel="import" href="../components/paper-tabs/paper-tabs.html">
<polymer-element name="tab-list" attributes="show">
<template>
<sprint-service id="service" sprints="{{sprints}}"></sprint-service>
<paper-tabs selected="all" valueattr="name" self-end>
<paper-tab name="all">ALL</paper-tab>
<template repeat="{{sprint in sprints}}">
<paper-tab name="{{sprint.id}}">{{sprint.id}}</paper-tab>
</template>
</paper-tabs>
</template>
<script>
Polymer('tab-list', {
ready: function() {
var tabs = document.querySelector('paper-tabs');
tabs.addEventListener('core-select', function() {
list.show = tabs.selected;
})
}
});
</script>
</polymer-element>
Index.htmlコード(スタイルなし):
<!doctype html>
<html>
<head>
<title>unquote</title>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<script src="../components/platform-dev/platform.js"></script>
<link rel="import" href="../components/font-roboto/roboto.html">
<link rel="import"
href="../components/core-header-panel/core-header-panel.html">
<link rel="import"
href="../components/core-toolbar/core-toolbar.html">
<link rel="import" href="tab-list.html">
<link rel="import" href="post-list.html">
</head>
<body unresolved touch-action="auto">
<core-header-panel>
<core-toolbar>
<tab-list></tab-list>
</core-toolbar>
<div class="container" layout vertical center>
<post-list show="all"></post-list>
</div>
</core-header-panel>
<script>
var list = document.querySelector('post-list');
</script>
</body>
</html>
だが
querySelector('paper-tabs') = *null*
eventListener
をindex.htmlに入れようとしましたが、同じ問題があります。誰が問題がどこにあるのか教えてもらえますか?
どうもありがとうございました!
document.querySelector('paper-tabs');
paper-tabs要素は見つかりません。これはtab-listのシャドウDOM内に隠されているためです要素。
paper-tabsにIDを与えるだけで、たとえばtabsとそのようにアクセスする
this.$.tabs
( http://www.polymer-project.org/docs/polymer/polymer.html#automatic-node-finding を参照してください。)
シャドウDOMに直接アクセスするオプションもあります
this.shadowRoot.querySelector('paper-tabs');
paper-tabs選択の変更のみをリッスンする場合は、変更ウォッチャーを使用できます。
<paper-tabs selected="{{currentTab}}">
Polymer('tab-list', {
currentTab: 'all',
currentTabChanged: function() {
console.log(this.currentTab);
}
});
( http://www.polymer-project.org/docs/polymer/polymer.html#change-watchers を参照)
<template is="dom-repeat" items="{{dataobject}}">
<div on-tap="_showdetail">
<iron-collapse id="collapse">??</iron-collapse>
</div>
</template>
そして、私が使用するdom-repeat内の鉄崩壊要素を切り替えるには
_showdetail: function(e){
Polymer.dom(e.currentTarget).querySelector('#collapse').toggle();
},