Vue.js 空过滤结果

2024-01-25

在 Vue 中,我必须过滤一些数据:

<input v-model="search">
<ul>
    <li v-repeat="photo in photos | filterBy search in 'name'">
        <img src="{{ photo.src }}" alt="{{ photo.name }}">
    </li>
    <li v-if="!photos.length">
        No results, sorry!
    </li>
</ul>

如何检测空过滤器结果并向用户显示适当的消息?

EDIT

我目前正在执行以下操作,我认为这是一个棘手的解决方法:

HTML:

<input v-model="search">
<ul>
    <li v-repeat="photo in photos">
        <img src="{{ photo.src }}" alt="{{ photo.name }}">
    </li>
    <li v-if="!photos.length">
        No results, sorry!
    </li>
</ul>

JavaScript:

var v = new Vue({
    data: {
        allPhotos: [...],
        photos: [],
        search: '',
    },
    ready: function () {
        var filter = Vue.filter('filterBy');
        var self = this;
        this.$watch('search', function () {
            self.photos = filter(self.allPhotos, self.search, 'name');
        }, {
            immediate: true
        });
    }
})

Vue 2.x(更新)

在 Vue 2.x 中,现在只能使用过滤器,正如文档所说 http://vuejs.org/guide/syntax.html#Filters,内部文本插值:

Vue 2.x 过滤器只能在 Mustache 绑定内部使用。要在指令绑定内实现相同的行为,您应该使用计算属性。

您可以使用内置 JavaScript 实现相同的行为filter方法和计算属性。

<input v-model="searchQuery">

<span v-if="!filteredItems.length">No results.</span>

<ul>
    <li v-for="item in filteredItems"></li>
</ul>
computed: {
  filteredItems: function () {
    var self = this;
    return self.items.filter(function (item) {
      return item.indexOf(self.searchQuery) !== -1;
    })
  }
}

Vue 1.x(原始答案)

目前有两种方法。在所有情况下,模板看起来都一样。

<input v-model="searchQuery">

<span v-if="!filteredItems.length">No results.</span>

<ul>
    <li v-for="item in filteredItems"></li>
</ul>

filterBy

原来的filterBy方法通过访问$options.

computed: {
    filteredItems: function () {
        return this.$options.filters.filterBy(this.items, this.searchQuery);
    }
}

$eval

更干净一点的方法。 Eval 表达式就像您在模板中所做的那样。

computed: {
  filteredItems: function () {
    return this.$eval('items | filterBy searchQuery');
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue.js 空过滤结果 的相关文章

随机推荐

  • 当文件存在时,python os.path.exists 报告 False

    您好 有一个应用程序有时会报告文件不存在 即使它存在 我正在使用 os path exists 并且该文件位于已安装的网络共享上 我使用的是 OSX Yosemite python 2 7 9 并且我拥有该文件的访问权限 这是奇怪的事情 下
  • 使用 pandas 将每月数据表转换为季节性时间序列

    我有一些表格格式的数据 其中行是年 列是月 我想将其转换为 pandas 中的时间序列格式 然后按季节平均值对数据进行分组 我特别想将冬季定义为 11 月至 3 月 并放弃其他所有内容 这是我将数据读入表格格式的代码 这样您就可以看到发生了
  • Laravel 自身模型上的父/子关系

    我想要获得至少有一个孩子的所有优惠券 一张优惠券可以有多个优惠券孩子 但任何优惠券只能有一个父母 我使用以下模型和调用对其进行设置 并且它生成的查询是根据需要的 直到这一部分 vouchers parent id vouchers id 想
  • 关于减少分支未命中预测

    我在一篇论文中看到一句话 将分支转化为数据依赖 以避免分支预测错误 第6页 我想知道如何将代码从分支更改为数据依赖关系 这是论文 http www adms conf org p1 SCHLEGEL pdf http www adms co
  • Bootbox 确认对话框问题

    不幸的是 文档 Bootbox http paynedigital com 2011 11 bootbox js alert confirm dialogs for twitter bootstrap http paynedigital c
  • 如何在Python中创建元组的元组?

    我想结合 A 1 3 5 B 2 4 6 into C 1 2 3 4 5 6 python中有没有一个函数可以做到这一点 Yes tuple zip A B 这就是全部 结果如下 Python 2 x 和 3 x 中 gt gt gt t
  • VSCode 新手:通过 Docker 进行远程 Jest/Node 调试

    我最近从 Vim 切换到 VSCode 并且尝试为通过 docker 运行的玩笑测试设置 VSCode 调试 调试工作 有点 如果我想运行玩笑测试并激活断点 我需要 插入断点 通过以下方式开始运行相关的笑话测试vscode jest tes
  • 将本地对象推入列表

    我有课 class Invader public Invader Invader public void Init InvaderTypes invadertype CIw2DImage AlienImage void Update flo
  • 修改SQL Server中的XML以添加根节点

    首先 为了给出这个问题的一些背景知识 我正在重写一些当前循环遍历某些 xml 的代码 在每个循环末尾插入一个表 替换为一个接受 xml 参数的 sp 并在一个 sp 中进行插入继续 将 xml 分解 到表中 主碎片已成功完成 但目前其中一列
  • iOS 7 onchange 事件在 iPad 3+Mini 中被破坏 // 需要解决

    请仅在运行 ios 7 的 iPad 上进行测试 iOS 7 似乎不支持 iPad 上 onchange 事件的alert 和confirm 奇怪的是 它可以在运行 ios 7 0 的 iPhone 4s 和桌面浏览器上运行 但不能在运行
  • 在使用 PKCE 的 OAuth 2.0 授权代码流程中,是什么阻止在第一次调用身份验证服务器时拦截代码质询?

    想象一下这次攻击 攻击者拦截对授权服务器的第一次调用 然后进行代码挑战 图中的步骤1 攻击者现在使用授权代码拦截来自授权服务器的响应 图中的步骤2 然后攻击者可以 POST 授权代码和代码验证程序来获取访问令牌 步骤3 Refer to t
  • Haml - 非法嵌套:纯文本中的嵌套是非法的

    我在使用 HAML 时遇到代码中的奇怪错误 其中我的代码在本地计算机上运行 但当我部署它时 出现以下错误 ActionView Template Error 非法嵌套 在纯文本中嵌套是非法的 我的代码看起来像这样 td style gt w
  • 使用日期的 For 循环编译错误:语法错误

    我正在尝试运行一个脚本 该脚本将浏览特定列的所有行 然后它将这些列中的日期与设定的日期进行比较 如果日期大于则删除该行 我收到的错误称为编译错误 语法错误 Sub removewrongyear Dim i As Integer For i
  • 预编译头文件和普通包含文件

    使用预编译头时 当我在常规头中包含一个已经包含在预编译头中的头时 是否会产生影响 或产生不良影响 或者换句话说 当我在另一个头文件中包含头 x 并同时在我的预编译头文件中包含 x 时 这是否会阻止预编译头提供的优化发挥作用 No 一般来说
  • 如何正确应用RGBA_8888和抖动?

    我有带有渐变的splash png 但在屏幕上这个图像看起来不太好 我的简单 apk这个问题包括 public class TestditherActivity extends Activity Override public void o
  • 替换文本文件中的一行

    我有一个文本文件 被另一个应用程序用作配置文件 我已将文件的每一行读入字符串数组 string arrLine File ReadAllLines pathToFile 这正是我需要的 现在 我需要做的就是用字符串替换 arrLine x
  • 如何从角度材料日期选择器获取当前时间?

    我正在使用角度材料日期选择器https material angular io components select overview https material angular io components select overview
  • 在CMake项目下编译单个文件?

    我正在开发一个 C 项目 该项目将包含在一个更大的项目中 我已经看到 在更大的项目 是一个 Qt 应用程序 它是从 qmake 生成的 上 我可以从 linux 命令行编译单个文件 只需输入特定文件的相对路径作为 make 的参数 另一方面
  • 尝试将实体编码为 json 时出现问题

    我尝试将 Doctrine 实体编码为 JSON 字符串 以作为 Ajax 响应发送 所以 我检查了文档 串行器组件 http symfony com doc current components serializer html 我尝试使用
  • Vue.js 空过滤结果

    在 Vue 中 我必须过滤一些数据