5

Tôi đang cố gắng quan sát các thay đổi đối với một mảng các đối tượng được chuyển vào phần tử Polymer. Khi một mục mới được thêm vào mảng, mảng cũng được thay đổi trong phần tử Polymer. Tuy nhiên, phương pháp quan sát không bao giờ được gọi.Các quan sát của Array 1.0 về sự thay đổi ràng buộc

Chứa tử

<dom-module is="table-container"> 
    <template> 
    <selectable-table table-items="{{items}}"></selectable-table> 
    <button on-click="addItem">Add Item</button>  
    </template> 
    <script> 
    Polymer({ 
     is : "table-container", 
     attached : function() { 
     this.items = []; 
     for (var i = 0; i < 3; i++) { 
      this.push("items", { 
      numerical: "1", 
      english: "one" 
      }); 
     } 
     }, 
     addItem : function() { 
     this.push("items", { 
      numerical: "3", 
      english: "three" 
     }) 
     } 
    }) 
    </script> 
</dom-module> 

Đang cố gắng để quan sát những thay đổi ở đây:

<dom-module id="selectable-table> 
    <template> 
    <div>{{tableItems}}</div> 
    </template> 
    <script> 
    Polymer({ 
     is : "selectable-table", 
     properties : { 
     tableItems: { 
      type: Object, 
      notify: true, 
      observer: "updateTableItems" 
     } 
     } 
     updateTableItems : function() { 
     // Updates here 
     } 
    }); 
    </script> 
</dom-module> 

Các "updateTableItems" phương pháp đang được gọi là ban đầu khi các mảng mục là lần đầu tiên dân cư nhưng không bao giờ khi nút được nhấp để thêm các đối tượng khác.

Trả lời

8

Để quan sát các thay đổi đối với mảng, hãy sử dụng kiểu quan sát sau đây.

Polymer({ 
    is : "selectable-table", 
    properties : { 
    tableItems: { 
     type: Array, 
     notify: true, 
    } 
    }, 

    observers: [ 
     'updateTableItems(tableItems.*)' 
    ], 
    updateTableItems : function() { 
    // Updates here 
    } 
}); 

tableItems là một mảng của các đối tượng, bạn nên sử dụng loại Array trong kê khai tài sản của bạn. Loại người quan sát mà bạn sử dụng sẽ chỉ kích hoạt, nếu bạn gán một thể hiện mảng mới cho thuộc tính tableItems. Đối với thao tác của mảng, thêm gọi lại của bạn vào observers. Bạn có thể tìm thêm chi tiết trong số docs.

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