Aurelia获得价值召集人的结果

时间:2015-11-12 16:16:09

标签: javascript aurelia

我想获得value conventer的结果,在我的视图中过滤数组,以显示找到的结果数。

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

我既不想将此逻辑移动到我的控制器(以保持其清洁),也不想添加拐杖,例如从值控制器返回一些数据。

我想要的是什么:

所以,基本上我想要角度优惠: 如图所示hereng-repeat="item in filteredItems = (items | filter:keyword)"hereng-repeat="item in items | filter:keyword as filteredItems"

我得到了什么:

不幸的是,在奥里利亚:

d of filteredDocuments = documents|docfilter:query:categories

实际上意味着d of filteredDocuments =文档 |docfilter:query:categories,如果我添加括号或as,它就不会运行(使用解析器失败)误差)。

因此,

是否有一种简洁的方法可以从数据过滤器中获取数据

此致,亚历山大

UPD 1:当我谈到从值控制器返回一些数据时,我的意思是:

export class DocfilterValueConverter {
  toView(docs, query, categories, objectToPassCount) {
    ...
    objectToPassCount.count = result.length;
    ...
  });
});

UPD 2.实际上,我错了:d of filteredDocuments = documents |docfilter:query:categories。它没有解决问题,但这段代码的作用是:

1)初始化filteredDocuments = documents |docfilter:query:categories 2)d of filteredDocuments这是在最开始的数组中重复过滤

1 个答案:

答案 0 :(得分:9)

假设你有一个外部元素,你可以将过滤后的项目填充到这样的ad-hoc属性中:

<!-- 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绑定命令是否有帮助 - 如下所示:<div let.foo="some binding expression">

修改

这里的东西更好一些: start

<template>
  <ul with.bind="myArray | filter">
    <li repeat.for="item of $this">${item}</li>
  </ul>
</template>