2013-08-23 62 views
0

我有一個簡單的AngularJS應用程序消耗對象的JSON數組是這樣的:Filter文本

$scope.faq = [ 
{ id: 1, question: "What is the meaning of life?", answer: "42"}, 
{ id: 2, question: "What <em>is<em> 1+1?", answer: "4"} 
] 

在我的HTML我有一個NG重複一個基本的過濾器從文本來這樣

ng-repeat="qa in faq | filter:searchText" 

的問題輸入是我想要的搜索,而忽略了JSON對象的HTML標籤,讓搜索短語「什麼是」將返回,而不是隻是第一個兩個對象進行篩選。如何更改過濾器來做到這一點?

回答

2

編寫自定義過濾器

在HTML:

ng-repeat="qa in faq | customFilter" 

在JS:

angular.module('youModule', []). 
    filter('customFilter', function() { 
    return function(input) { 
     var out; 
     //parse your strings(find <tag> and exclude it) and push in out variable 
     return out; 
    } 
    }); 

UPD 您可以在自定義過濾器不僅輸入值傳送(可以加參數,如'searchText') html:ng-repeat="qa in faq | customFilter:searchString"

js:return function(input, searchString) {

0

我敢肯定有更好的方法,但至少這是相當簡單:

return $('<div>').html(value).text(); 

非jQuery的版本:

var div = document.createElement('div'); 
div.innerHTML = value; 
return div.innerText; 

使用這兩種創建一個過濾器,並把它在您的filter:searchText之前。