2017-05-30 31 views
0

我有一个代码可以过滤一个字段并标记与输入搜索相关的单词。我需要这个过滤器,不仅通过标题,而且通过名称。我如何修改代码以便在编写时筛选标题和名称?通过Angular.js中的两个字段进行筛选

<li ng-repeat="item in data | filter:search.title" 
    ng-bind-html="item.title | highlight:search.title"> 
</li> 

http://jsfiddle.net/sgo3wxwc/

+1

我在代码中的任何地方都找不到'name'。 –

+0

我仍然无法找到'name' .. –

+0

@MariaInesParnisari look http://jsfiddle.net/sgo3wxwc/ – yavg

回答

0

您可以通过对象收集送他们两个或两个以上选项来过滤:

<li ng-repeat="item in data | filter:{title:search.title,name:search.name}" 
    ng-bind-html="item.title | highlight:search.title"> 
</li> 

它建议使用过滤器控制器,以避免$他们

消化周期
+0

如何在同一行显示两个元素? – yavg

+0

你可以这样绑定

{{item.title - item.name}}

+0

我修改链接。 http://jsfiddle.net/sgo3wxwc/我的问题仍在继续.. – yavg

0
<div ng-app="myApp" ng-controller="myCtrl"> 
     <input type="text" placeholder="Search" ng-model="search.title"> 
    <ul> 
     <!-- with filter --> 
     <li ng-repeat="item in data | filter:{title:search.title,name:search.name}" 
    ng-bind-html="item.title | highlight:search.title"> 
     {{item}} 
     </li> 
     </ul> 
</div> 

脚本代码在这里:

var app = angular.module("myApp", []); 
app.controller("myCtrl", function($scope) { 
    $scope.data = [ 
      { title: "Bad",name:'bill' }, 
      { title: "Good",name:'Goe' }, 
      { title: "Great",name:'Brad' }, 
      { title: "Cool",name:'yan' }, 
      { title: "Excellent",name:'mikle' }, 
      { title: "Awesome",name:'mosa' }, 
      { title: "Horrible",name:'morteza' }, 
      ] 

}).filter('highlight', function($sce) { 
    return function(text, phrase) { 
     if (phrase) text = text.replace(new RegExp('('+phrase+')', 'gi'), 
     '<span class="highlighted">$1</span>') 

     return $sce.trustAsHtml(text) 
    } 
    }) 
+0

它不适用于我http://jsfiddle.net/sgo3wxwc/ – yavg

+0

它的工作,但突出显示不工作https://jsfiddle.net/e4njevts/ –

+0

即时通讯编辑代码请检查:https://jsfiddle.net/e4njevts/1/ –

相关问题