2015-09-02 12 views
5

Próbuję polimeru, ale mam problem z rejestracją metod i wywoływanie ich, próbowałem wszystko w Internecie i nic nie wydaje się działać, spędziłem zbyt wiele godzin na to, ale bez rezultatu, proszę mi pomóc[dom-bind :: _ createEventHandler]: metoda detektora nie została zdefiniowana

tutaj jest mój kod:

<dom-module id="products-list"> 
<template> 
<template is="dom-bind"> 
    <iron-ajax id="ajax" auto 
     handle-as="json" 
     last-response="{{ajaxResponse}}"></iron-ajax> 
    <div class="main"> 
    <template is="dom-repeat" items="[[ajaxResponse.dataResult]]"> 
     <paper-card heading="[[item.name]]" image="[[item.image]]" class="pb16 w100 flex layout horizontal"> 
      <div class="card-content">[[item.desc]]</div> 
      <div class="card-actions"> 
       <paper-item> 
        <strong>[[item.price]]</strong> 
        <div class="flex"></div> 
        <paper-button on-click="_addToCart" raised><iron-icon icon="icons:add-shopping-cart"></iron-icon>Add to cart</paper-button> 
       </paper-item> 
      </div> 
     </paper-card> 
    </template> 
</div> 
</template> 
</template> 
<script> 
    Polymer({ 
     is: "products-list", 
     ready: function() { 
      var baseUrl = getBaseURL(); 
      var token = getAccessToken(); 
      var namespace = getNamespace(); 
      var appKey = getAppKey(); 
      var appSecret = getAppSecret(); 
      var url = baseUrl + '/stream/product.json'; 
      var params = { 
       'page' : 0, 
       'size' : 25 
      }; 
      var headers = { 
       'X-Auth-Token' : token, 
       'X-NAME-SPACE' : namespace, 
       'X-APP-KEY' : appKey, 
       'X-APP-SECRET' : appSecret, 
      }; 
      var ajax = document.querySelector("#ajax"); 
      ajax.url = url; 
      ajax.headers = headers; 
     }, 
     properties: { 

     }, 
     _addToCart: function (e) { 
      console.log('You pressed button ' + e.model.item.name); 
     } 
    }); 
</script> 

Wszystko działa poprawnie z wyjątkiem klikając przycisk, otrzymuję następujący błąd:

[dom-bind::_createEventHandler]: listener method `_addToCart` not defined 
+0

Nie znam tej biblioteki, ale czy próbowałeś używać Polyer._addToCart? – Sheerforce

+0

Próbowałem już tego i nie zadziałało. – user1221612

Odpowiedz

6

Usunięcie zawinięcia dom-bind wszystko będzie działać poprawnie.

<template is="dom-bind">...</template> 

dom-bind nie jest potrzebny w definicjach elementów. Jest przeznaczony do używania na normalnych stronach HTML i uruchamia nowy "kontekst bindowania" dla twoich elementów. Dlatego nie znajduje tej metody, ponieważ próbuje znaleźć metodę obsługi zdarzeń poza definicją elementu.

+0

To też był mój problem. Po usunięciu dom-bind z wnętrza elementu wszystko działało. Dzięki! – DallaRosa

+0

Miło słyszeć. Głosować. Twoje zdrowie! –

0
<paper-button id="addToCart" raised> 
    <iron-icon icon="icons:add-shopping-cart"></iron-icon> 
    Add to cart 
</paper-button> 

i gotowe:

this.$.addtoCart.addEventListener('click',this._addToCart.bind(this)) 
1

myślę już rozwiązany problem, więc dla innych po prostu zastąpić on-click przez on-tap razie tak:

<paper-button on-tap="_addToCart">...</paper-button>

Powiązane problemy