Aurelia在视图中获得了价值约定结果

Aurelia get value conventer results in view

本文关键字:约定 结果 获得了 视图 Aurelia      更新时间:2023-09-26

我想得到值约定器的结果,它在我的视图中过滤一个数组,以显示找到的结果数。

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

我既不想把这个逻辑移到我的控制器上(保持它的干净),也不想添加拐杖,比如从值控制器返回一些数据。

我想要什么:

所以,基本上我想要一些像棱角分明的优惠:如图所示:ng-repeat="item in filteredItems = (items | filter:keyword)"或此处:ng-repeat="item in items | filter:keyword as filteredItems"

我得到的:

不幸的是,在Aurelia:

d of filteredDocuments = documents|docfilter:query:categories

实际上意味着d offilteredDocuments=documents|docfilter:query:categories,如果我添加方括号或as,它将不会运行(由于语法分析器错误而失败)。

所以

是否有一种干净的方法可以从视图中的数据过滤器中获取数据?

致以最良好的问候,Alexander


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

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

更新2。实际上,我错了:d offilteredDocuments=documents|docfilter:query:categories。它并不能解决问题,但此代码的作用是:

1) 初始化时的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绑定命令是否有用——类似于这样的命令:<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>