Aurelia强迫脏检查没有吸气剂

时间:2017-12-28 10:27:53

标签: aurelia

我正在尝试根据函数调用的结果有条件地向元素添加一个类,但Aurelia在其参数更改时不会重新运行该函数。通常我会使用getter强制进行脏检查,但因为我的函数需要不可能的参数。

有问题的功能如下:

isVisible (item, filters) {
    // If there are no filters selected, or at least one of the item's tag names are inside the filters the item is considered visible
    return (!filters.length || (filters.length && item.tags.some(tag => {
        return filters.indexOf(tag.name) !== -1 ? true : false;
    })));
}

如果不明显需要item和字符串数组(filters),然后检查item.tags[].name是否在filters数组中

它在我的视图中使用如下:

<item repeat.for="item of items" item.bind="item" class="${isVisible(item, filters) ? 'show' : 'hide'}"></item>

我还尝试过直接将代码添加到视图中,我假设它会强制Aurelia重新计算内容但是当将整个函数的代码添加到视图中时(在${code here}内)我得到解析错误意外>

1 个答案:

答案 0 :(得分:2)

上面的示例足以在filters更改时重新评估。但是,如果你改变filters,Aurelia将无法接收更改,因为阵列观察不是出于性能原因而自动进行的。您可以通过使用filters的不可变实例或另外观察filters长度来解决此问题,如下所示:

<item repeat.for="item of items"
    item.bind="item"
    class="${isVisible(item, filters, filters.length) ? 'show' : 'hide'></item>