2015-05-08 34 views
0

我正嘗試使用聚合物的core-list擴展名。 我使用例如由谷歌開發者從This YT Link模板自動綁定時出現聚合物錯誤

is="auto-binding"值添加到我的模板,我去錯誤:

Uncaught TypeError: Cannot set property 'data' of null 

我也想設置height: 100%core-list,它也沒有工作,我得到了警告:

core-list must either be sized or be inside an overflow:auto div that is sized 

在下面,我將我的代碼:

<link rel="import" href="../bower_components/paper-tabs/paper-tabs.html"> 
<link rel="import" href="../bower_components/core-list/core-list.html"> 
<link rel="import" href="../bower_components/core-pages/core-pages.html"> 
<link rel="import" href="../bower_components/core-ajax/core-ajax.html"> 
<!--{{hash}--> 
<polymer-element name="progress-page" attributes="hash"> 
    <template> 
        <template is="auto-binding" id="app" style=" height:100%; overflow: auto;"> 
         <core-list data="{{data}}" flex style=" height:100%;"> 
          <template> 
           <div class="row" layout horizontal center> 
            <div data-index="{{index}}">{{model.name}}</div> 
           </div> 
          </template> 
         </core-list> 
        </template> 

</template> 

    <script> 
     Polymer('progress-page', { 
      ready: function() { 
       this.selected = 0; 
       var app = document.querySelector('#app'); 
       app.data = generateContacts(); 

       function generateContacts() { 
        var data = []; 
        for (var i = 0; i < 1000; i++) { 
         data.push({ 
          name: 'dddd', 
          string: 'asd' 
         }); 
        } 
        return data; 
       } 
      } 
     }); 

    </script> 
</polymer-element> 

凸輪有人請告訴我什麼是錯?這是我添加的鏈接的1:1版本。

回答

1

您不應該在裏面使用template is="auto-binding"a聚合物元素。自動綁定模板的全部要點是,它允許您在之外設置聚合物元素的數據綁定

所以你在這裏結合了兩個概念。這兩條線是你會在你的主頁使用,如果你使用一個自動綁定模板:

var app = document.querySelector('#app'); 
app.data = generateContacts(); 

在這裏,我們試圖檢索到自動綁定模板的引用,並添加一個數據屬性到它。

這不適用於您的情況。 '#app'在<progress-page>的shadow DOM中,所以document.querySelector不會找到它。

這條線,在另一方面,添加一個屬性到<progress-page>元素,這是做,如果你正在使用的核心列表中的元素裏面的正確的事情:

this.selected = 0; 

所以,如果你想要使用自動綁定模板,消除Polymer元素並使用第一種方法(querySelector並分配app.data,app.selected)。

如果你想創建一個聚合物元件,消除自動綁定模板和使用第二種方法:

this.data = generateContacts(); 
this.selected = 0; 

這裏的這段代碼與自動綁定模板的工作版本中刪除:

http://jsbin.com/lofega/2/edit

+0

感謝您的回覆,但您能否告訴我如何將核心列表放入紙張標籤中?當我試圖將核心列表放入紙張選項卡時,我仍然遇到錯誤「核心列表必須調整大小或位於溢出範圍內:自動格式大小爲」 –

+0

您是否試圖將「core-list」_inside_ '紙tabs'?或者用'paper-tabs'控制它? '紙張標籤'只是一個標籤條。如果您想根據當前選擇的選項卡更改視圖,則需要「core-pages」或「core-animated-pages」之類的內容。看看[單頁應用文章](https://www.polymer-project.org/0.5/articles/spa.html)(它使用核心動畫頁面和菜單),看看是否這有助於。標籤的一般方法(將標籤放在工具欄中,並使用數據綁定來連接標籤和「核心頁面」控件。 – DocDude

+0

正如你所說,我試圖用'核心動畫頁面'的'紙張',現在我遇到了頁面轉換和網址的麻煩。 –