0

次のようなオブジェクトの JSON 配列を使用する単純な AngularJS アプリがあります。

$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-repeatがあります

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

問題は、JSON オブジェクトの HTML タグを無視して検索をフィルタリングして、「what is」というフレーズを検索すると、最初のオブジェクトだけでなく両方のオブジェクトが返されるようにすることです。これを行うためにフィルターを変更するにはどうすればよいですか?

4

2 に答える 2

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) {

于 2013-08-23T20:48:20.573 に答える
0

もっと良い方法があると確信していますが、少なくともこれはかなり簡単です:

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

jQuery 以外のバージョン:

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

これらのいずれかを使用してフィルターを作成し、filter:searchText.

于 2013-08-23T20:39:22.020 に答える