AngularJS:修改 ng-repeat 内的值

2023-12-24

我在 Angular 中有一个简单的表:

<table>
    <tr ng-repeat="row in $data">
        <td>{{row.name}}</td>
        <td>{{row.surname}}</td>
    </tr>
</table>

这会呈现这样的东西:

<table>
    <tr>
        <td>Johnathan</td>
        <td>Smith</td>
    </tr>
    <tr>
        <td>Jane</td>
        <td>Doe</td>
    </tr>
</table>

但我有一个动态搜索功能,可以重新加载表格,我需要在结果中突出显示搜索字符串,如下所示(搜索词是“John”):

<table>
    <tr>
        <td><span class="red">John</span>athan</td>
        <td>Smith</td>
    </tr>
</table>

现在我希望这样的事情能够发挥作用:

<table>
    <tr ng-repeat="row in $data">
        <td>{{myFunction(row.name)}}</td>
        <td>{{row.surname}}</td>
    </tr>
</table>

但事实并非如此。有办法让这个工作吗?

UPDATE:已解决,@loan 提出的解决方案适用于这种情况。


正如您将在下面的示例中看到的,您可以执行类似的操作。

Example http://plnkr.co/edit/aCB5Y8YAMMT3buhenDoA

在现有循环中,您可以添加自定义过滤器,如下所示:

<body ng-controller="TestController">
  <h1>Hello Plunker!</h1>
  <input type="text" ng-model="query" />

  <ul>
    <li ng-repeat="item in data | filter:query">
      <!-- use the custom filter to highlight your queried data -->
      <span ng-bind-html="item.name | highlight:query"></span>
    </li>
  </ul>
</body>

在您的 JavaScript 文件中,您可以创建自定义过滤器:

(function() {
  'use strict';

  angular.module("app", []);

  //to produce trusted html you should inject the $sce service
  angular.module("app").filter('highlight', ['$sce', function($sce) {

    function escapeRegexp(queryToEscape) {
      return queryToEscape.replace(/([.?*+^$[\]\\(){}|-])/g, '\\$1');
    }

    return function(matchItem, query) {
      return $sce.trustAsHtml(query ? ('' + matchItem).replace(new RegExp(escapeRegexp(query), 'gi'), '<strong>$&</strong>') : matchItem);
    };
  }]);

  angular.module("app")
    .controller('TestController', ['$scope',
      function($scope) {

        $scope.query = ""; //your scope variable that holds the query

        //the dummy data source
        $scope.data = [{
          name: "foo"
        },{
          name: "bar"
        },
        {
          name: "foo bar"
        }];
      }
    ]);

})();

如果您愿意,可以将过滤器中的 html 替换为您的值:

<strong>$&</strong>

to

<span class="red">$&</span>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS:修改 ng-repeat 内的值 的相关文章

随机推荐

  • 如何解决此异常“无法在类中找到属性‘ProductCode’的设置器...”

    我收到以下异常 Could not find a setter for property ProductCode in class OrderItem class 属性 ProductCode 是我的表键之一 看看类中的属性声明如何 pub
  • mySQL 传递闭包表

    我在 SQL Server 中使用了一些代码 从另一个仅具有直接父 子关系的表生成闭包表 我可以对此运行非常简单的查询来确定沿袭 现在我需要在 mySQL 中完成所有这些操作 但是我在递归查询生成闭包表时遇到了问题 我原来的 SQL Ser
  • 如何获取主键来执行更新语句[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试使用 Java JDBC 更新我的表 但我不知道如何使用准备好的语句调用我的主键 我尝试做一个USER ID我的数据库列的对象 但
  • Wix 在重大升级期间不会删除以前版本的burn exe

    我使用burn bootstrapper 创建了一个wix exe 当我尝试对其进行重大升级时 会安装新版本 新升级中缺少的功能也将从现有文件夹结构中删除 但在 添加或删除程序 中我仍然可以找到这两个安装 我已在 Bootstrapper
  • Cassandra 中按时间戳排序最新记录

    我正在尝试显示传感器列表中的最新值 该列表还应该可以按时间戳排序 我尝试了两种不同的方法 我在主键中包含了传感器的更新时间 CREATE TABLE sensors customerid int sensorid int changedat
  • 每次在 Spring 上测试后重置数据库而不使用 DirtiesContext

    我想知道是否有某种方法可以在每次集成测试后重置数据库without DirtiesContext DirtiesContext classMode DirtiesContext ClassMode AFTER EACH TEST METHO
  • 模糊事件停止点击事件

    示例代码 http jsfiddle net slolife PnmxM http jsfiddle net slolife PnmxM 我问这个问题虽然有很多类似的问题 但我觉得它们不一样 我有一个文本框 当它模糊时 应该执行某些操作 我
  • 数据注释标签放在哪里?

    我正在使用 pro asp net mvc 2 0 框架 似乎他将数据注释标记放在也生成 linq to sql 的类上 Table Name Products public class Product HiddenInput Displa
  • /tmp/hive 上的 Powershell chmod 用于 winutils 和 hadoop/spark

    我目前正在尝试将在测试堆栈上设置 Spark Hadoop 的过程合并到我们的 powershell 脚本中 这是一个 Windows 环境 有些地方会出现问题 但这是最糟糕的 当我手动安装时 我可以运行 HADOOP HOME bin w
  • iPhone:如何下载完整的网站?

    您建议我使用哪种方法将网站 一个包含所有包含图像的 HTML 网站 下载到 iPhone 问题是如何抓取所有这些微小的部分 Javascript 图像 CSS 并将它们保存在本地 这与具体实现无关 我知道如何使用 NSURLRequest
  • 使用 Google Apps 脚本记录

    我有两个关于使用应用程序脚本进行日志记录的问题 1 我有两个 gs 文件 在同一个项目中 一个 F1 正在通过以下方式呼叫另一个 F2 urlfetch POST 请求 这Logger log在 F1 中工作得很好 但在 F2 中却不行 也
  • 为什么链接描述文件有多个节命令?

    我一直在读ld 的部分文档 https access redhat com documentation en US Red Hat Enterprise Linux 4 html Using ld the GNU Linker sectio
  • 如何使用指定类路径的命令行从 jar 运行类

    我正在尝试从 JAR 运行一个类 这个类不是这个 jar 中唯一的主类 此外 它还需要许多其他 jar 文件 我将它们保存在与此 Jar 相同的目录中 我尝试过的命令如下 mydir是我所有jar所在的目录 使用Windows平台 mysq
  • 有没有办法在 Windows 上的 Ubuntu 上的 Bash 中使用 Notepad++ 打开文件?

    我使用的是 Windows 10 但我在 Windows 上的 Ubuntu WSL 上使用 Bash 来熟悉 Linux 命令行 我正在尝试充分利用它的功能 并且认为能够打开 比方说 会很棒 index html从 Notepad 中的
  • 如何使用node.js编译lesscss

    Hi 我已经使用以下代码完成了我的网站编码lesscss客户端现在想要编译less所以我已经下载了node js 我的网站在本地主机上运行 我想首先知道 我必须在哪里安装node js 接下来我要做什么 命令行工具 命令行等 如果有人可以帮
  • 我将一些值发送到另一个网址以及关于此的信息

    我使用 spring httpClient 将一些值发送到其他网址 关于这个问题 据我所知 如果我发送name mister age 30 values 收到的页面得到的值不是 http 状态值 对吧 HTTP 状态值用于发送页面而不是接收
  • 如何在 Spring Boot 应用程序中更改服务器?

    My project requirement is to use another server than tomcat How can we change embedded server from spring boot applicati
  • 重新加载/刷新 iframe 的最佳方法是什么?

    我想重新加载使用 JavaScript 到目前为止我发现的最好的方法是设置 iframesrc归因于自身 但这不是很干净 有任何想法吗 document getElementById some frame id contentWindow
  • 只加载 Ruby 中正在使用的类?

    如果我加载x rb 然后加载该文件中的所有类 https stackoverflow com questions 10001106 does requiring a gem load everything including things
  • AngularJS:修改 ng-repeat 内的值

    我在 Angular 中有一个简单的表 table tr td row name td td row surname td tr table 这会呈现这样的东西 table tr td Johnathan td td Smith td tr