javascript - Angularjs 根据输入查询动态更改 CSS 类的最佳方法

标签 javascript angularjs

在 AngularJS 中 phonecat tutorial ,有一个输入框,用于将过滤器应用于 ng-repeat。这对于返回子集数组以显示在屏幕上非常有用。

代码如下:

Search: <input ng-model="query">
  <ul class="phones">

...

    <li ng-repeat="phone in phones | filter:query | orderBy:orderProp" class="thumbnail">
      <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
      <a href="#/phones/{{phone.id}}">{{phone.name}}</a>
      <p>{{phone.snippet}}</p>
    </li>
  </ul>

我想知道将 CSS 类动态添加到匹配元素的最佳方法是什么。一个示例用例是向所有匹配元素添加背景颜色(样式 .matching{})。

比较 ng-class 中的查询文本无效:

        <li ng-repeat="phone in phones" class="thumbnail">
      <a href="#/phones/{{phone.id}}" class="thumb"><img ng-src="{{phone.imageUrl}}"></a>
      <a href="#/phones/{{phone.id}}" ng-class="{'matching': phone.name.indexOf(query) != -1 }">{{phone.name}}</a>
      <p>{{phone.snippet}}</p>
    </li>
  </ul>

我是 Angular 的新手,只是想了解一下这个框架。我是否必须以某种方式将查询文本绑定(bind)到元素以便进行比较?更好的方法是通过自定义指令来处理这个问题吗?

感谢任何帮助 - 谢谢!

最佳答案

尝试将类设置为 Controller 中的函数。 ng-class="GetMatchingClass(phone)"

$scope.GetMatchingClass= function(phone){
    if(phone.name.indexOf(query) != -1 ){return "matching"}
    return "";
}

关于javascript - Angularjs 根据输入查询动态更改 CSS 类的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729671/

相关文章:

javascript - 如何查看当前 deno 版本中使用的 typescript 版本?

javascript - 慢速滚动抖动

javascript - 包装其元素的 Angular 属性指令

javascript - 对已上传的图像文件进行 Request.post

javascript - ngGrid 多选取消当前选择

javascript - Canvas 上下文 "bezierCurveTo"在 Chrome 16+/Safari 5+ 下存在错误

javascript - 从下拉列表中选择选项

javascript - 使用 JS 对带有子项的 HTML 表格进行排序

javascript - 如何在 AngularJS 中将 Modal 的响应作为服务处理

html - ionic 列表项单击在另一个 HTML 页面中显示详细信息