我想获得值召集器的结果,该值筛选器在我的 View 中过滤数组以显示找到的结果数。

  <div repeat.for="d of documents|docfilter:query:categories">
    <doc-template d.bind="d"></doc-template>
  </div>

我既不想将此逻辑移至我的 Controller (以使其保持整洁),也不想添加拐杖,例如从值 Controller 返回一些数据。

我想要的是:

因此,基本上,我想要类似优惠的产品:
就像显示的here一样:ng-repeat="item in filteredItems = (items | filter:keyword)"here:ng-repeat="item in items | filter:keyword as filteredItems"
我得到的是:

不幸的是,在 Aurelia :
d of filteredDocuments = documents|docfilter:query:categories
实际上意味着d of filteredDocuments =文档 |docfilter:query:categories,如果添加方括号或as,它将无法运行(解析器错误失败)。

所以,

有没有一种干净的方法可以从 View 中的数据过滤器中获取数据?

最好的问候,亚历山大

UPD 1:当我谈到要从值 Controller 返回一些数据时,我的意思是:
export class DocfilterValueConverter {
  toView(docs, query, categories, objectToPassCount) {
    ...
    objectToPassCount.count = result.length;
    ...
  });
});

UPD2。实际上,我对此有误:d of filteredDocuments =文档 |docfilter:query:categories。它不能解决问题,但是此代码的作用是:

1)init上的filteredDocuments = documents |docfilter:query:categories2)d of filteredDocuments,它是在最开始的数组中过滤后的重复

最佳答案

假设您有一个外部元素,则可以将过滤后的项目填充到一个临时属性中,如下所示:

<!-- assign the filtered items to the div's "items" property: -->
<div ref="myDiv" items.bind="documents | docfilter : query : categories">

  <!-- use the filtered items:  -->
  <div repeat.for="d of myDiv.items">
    <doc-template d.bind="d"></doc-template>
  </div>

</div>
我知道这并不是您要找的东西,但可以完成工作。我正在研究添加let绑定(bind)命令是否会有所帮助-像这样:<div let.foo="some binding expression">编辑
这里有些更好:
https://gist.run/?id=1847b233d0bfa14e0c6c4df1d7952597
<template>
  <ul with.bind="myArray | filter">
    <li repeat.for="item of $this">${item}</li>
  </ul>
</template>

关于javascript - Aurelia获得值(value)召集人的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33676138/

10-11 14:20