聚合物dom-如果不重新检查条件

polymer dom-if does not re check the condition

我有一个简单的 dom-if 在模板中:

<div>
        <template is="dom-if" if="{{checkListEmpty()}}" restamp>
                <paper-button raised class="init" on-tap="initialize">Initialize</paper-button>
        </template>
</div>

以及显示或隐藏的功能。

checkListEmpty() {
    return this.todos.length == 0;
}

这是第一次使用。如果 this.todos.length 变为 1,则模板不会消失。条件为假时如何隐藏

您的函数没有绑定,因为没有 属性 可以绑定。 要使其工作,您应该在参数中添加一个 属性:checkListEmpty(foo)。 就像那样,每次 属性 foo 更改都会执行该功能。 但是,如果这个数组的内容发生变化(内容被推送),数组 属性 将不起作用,除非这是被替换的全局数组 属性 :

var bar = [], foo = ["ggg"];
bar = foo;

在那种情况下,该函数将被调用,但它不是很好。

无论如何,对于您的问题,您可以为 paper-button 使用隐藏的 属性 或将 DOM-IF 与 table 长度绑定。

<template is="dom-if" if="[[!bar.length]]" restamp>
  <paper-button raised on-tap="addBar">Initialize</paper-button>
</template>

<paper-button raised on-tap="addBar" hidden="[[bar.length]]">Initialize</paper-button>

然后每次将 属性 添加到数组中或将其删除,直到其中没有任何内容为止,您的按钮将显示或不显示。

您可以看到一个有效的 jsfiddle(尽管使用 chrome 并耐心等待初始化。如果它不起作用,请在此处评论)