2015-09-02 15 views
5

Tôi đang thử polymer, nhưng có vấn đề trong việc đăng ký phương pháp và gọi cho họ, tôi đã thử mọi thứ trên internet và không có gì có vẻ hiệu quả, tôi đã dành quá nhiều giờ về vấn đề này nhưng không có kết quả, xin vui lòng giúp tôi[dom-bind :: _ createEventHandler]: phương pháp nghe không được xác định

đây là mã của tôi:

<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> 

Tất cả mọi thứ hoạt động tốt, ngoại trừ cách nhấn vào nút, tôi nhận được lỗi sau:

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

Tôi không biết thư viện đó, nhưng bạn đã thử sử dụng Polyer._addToCart chưa? – Sheerforce

+0

Tôi đã thử điều đó và nó không hoạt động. – user1221612

Trả lời

6

Xóa tất cả mọi thứ ràng buộc tất cả mọi thứ sẽ hoạt động tốt.

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

không cần đặt dấu nối trong định nghĩa phần tử. Nó được dự định sẽ được sử dụng trong các trang HTML bình thường, và nó bắt đầu một "bối cảnh ràng buộc" mới cho các phần tử của bạn. Đây là lý do tại sao nó không tìm thấy phương thức, bởi vì nó đang cố gắng tìm phương thức xử lý sự kiện bên ngoài định nghĩa phần tử.

+0

Đây cũng là vấn đề của tôi. Sau khi loại bỏ các ràng buộc dom từ bên trong các yếu tố tất cả mọi thứ làm việc. Cảm ơn! – DallaRosa

+0

Rất vui được nghe. Bỏ phiếu lên. Chúc mừng! –

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

và sẵn sàng:

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

Tôi nghĩ rằng bạn đã giải quyết vấn đề của bạn, vì vậy đối với những người khác bạn chỉ cần thay thế on-click bởi on-tap sự kiện như thế này:

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

Các vấn đề liên quan