如何在不重新实现属性的情况下更新聚合物绑定?

时间:2015-11-08 12:40:04

标签: binding polymer

我有以下情况: 从数组中呈现项目的自定义元素

<dom-module id="shopping-cart">
 <template>
  <style>
    :host {
      display: block;
    }
  </style>
  <template is="dom-repeat" items=[[cartItems]]>
    <tr>
      <td>[[item.name]]</td>
      <td><span>[[item.quantity]]</span> <small>[[item.uom]]</small></td>
      <td><span>[[item.cost]]</span> <small>lei</small></td>
    </tr>
  </template>
 </template>
<script>
  (function() {
  'use strict';

  Polymer({
    is: 'shopping-cart',

    properties: {
      cartItems: {
        type: Object,
        value: []
      }
    }
  });
})();
</script>
<!-- And this is the container -->
<template is="dom-bind" id="app">
  <shopping-cart cart-items="[[cartItems]]"></shopping-cart>
</template>

我正在根据某些事件操纵app.cartItems对象。我希望在更改数组时更新绑定,但它不会。在推送新元素或删除其他元素时,更改不会反映在shopping-cart元素中。我试图手动触发cart-items-changed事件,但这仍然没有帮助。唯一似乎导致绑定刷新的事情是为app.cartItems属性分配一个新数组,但这看起来并不正确。我觉得我错过了一些简单的步骤,但我无法弄清楚哪一个。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

每个Polymer元素都有以下可用的数组变异方法:

     
      
  • push(path,item1,[...,itemN])
  •   
  • 弹出(路径)
  •   
  • unshift(path,item1,[...,itemN])
  •   
  • 移(路径)
  •   
  • splice(path,index,removeCount,[item1,...,itemN])
  •   

您需要使用其中一个聚合物来获得有关更改的通知。