Привет, я использую angularjs для функциональности поиска. Поиск работает нормально, если я правильно ввожу ключевые слова.

т.е.

**) Предположим, что массивом значений является [«Search Text Value», «Search Text Sentense»].

**) Если я ищу «Поиск» в текстовом поле, оно показывает оба значения.

**) Если я ищу «Поиск текста Val», он показывает только результат «Поиск текста значения». То же самое и для предложения. Все это работает нормально.

**) Но вместо того, чтобы вводить постоянно, если я ввожу «Поиск значения» или «Поиск предложения», он ничего не показывает. Но я хочу показать данные, если я ввожу «Значение поиска», мне нужно показать значение поиска текста ».

Пожалуйста, посмотрите на эту скрипку,

jsfiddle

var app = angular.module('myApp', []); app.controller('myCtrl', ['$scope', 'store', function($scope, store) { $scope.search = ''; $scope.products = []; $scope.products = store.getProducts(); $scope.filterProductsByCategory = function(category) { $scope.search = category; }; }]); // fake service, substitute with your server call ($http) app.factory('store', function() { var products = [{ name: 'Apple Tasty fruit', category: 'Fruit', AddedBy: 'Anil Singh' }, { name: 'Apple Taste is sweet', category: 'Fruit', AddedBy: 'Anil Singh' }, { name: 'Cheese', category: 'Dairy', AddedBy: 'Anil Singh' }]; return { getProducts: function() { return products; } }; }); 
 /* Put your css in here */ input[type=text] { width: 100%; padding: 12px 20px; margin: 8px 0; box-sizing: border-box; } 
 {amp}lt;!DOCTYPE html{amp}gt; {amp}lt;html ng-app="myApp"{amp}gt; {amp}lt;head{amp}gt; {amp}lt;meta charset="utf-8" /{amp}gt; {amp}lt;title{amp}gt;angularjs filter example Plunker{amp}lt;/title{amp}gt; {amp}lt;link rel="stylesheet" href="style.css" /{amp}gt; {amp}lt;script data-require="angular.js@1.5.x" src="https://code.angularjs.org/1.5.8/angular.js" data-semver="1.5.8"{amp}gt;{amp}lt;/script{amp}gt; {amp}lt;script{amp}gt; {amp}lt;/script{amp}gt; {amp}lt;/head{amp}gt; {amp}lt;body{amp}gt; {amp}lt;div ng-controller="myCtrl"{amp}gt; {amp}lt;h2{amp}gt;Search Product: {amp}lt;/h2{amp}gt; {amp}lt;input type="text" ng-model="search" placeholder="Search..." /{amp}gt; {amp}lt;table cellpadding="5" cellspacing="1" border="1" style="width:100%;"{amp}gt; {amp}lt;tr{amp}gt; {amp}lt;th{amp}gt;Product{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;Category{amp}lt;/th{amp}gt; {amp}lt;th{amp}gt;AddedBy{amp}lt;/th{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;tr ng-repeat="product in products | filter:search | orderBy:'name'"{amp}gt; {amp}lt;td{amp}gt;{{product.name}}{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;{{product.category}}{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;{{product.AddedBy}}{amp}lt;/td{amp}gt; {amp}lt;/tr{amp}gt; {amp}lt;/table{amp}gt; {amp}lt;/div{amp}gt; {amp}lt;/body{amp}gt; {amp}lt;/html{amp}gt; 

Это пример кода. Я написал такой код,

 return cardDetails.filter(function (card) { return (!$scope.search || ($scope.search {amp}amp;{amp}amp; $scope.search.toLowerCase().split(' ').every(function(str){ return card.Tag.toLowerCase().indexOf(str) != -1; }))); }).length {amp}gt; 0; 

Но этот не работает для меня. Как я могу это сделать? Может кто-нибудь, пожалуйста, скажите мне

Если я вас правильно понял, вы хотите включить в свой поиск товары с названиями, которые соответствуют одному или всем поисковым запросам в любом порядке.

AngularJS

 $scope.loseKeywordFilter = function(keywords) { var split_keywords = new RegExp('(' keywords.split(' ').join('|') ')', 'i'); return function(product) { return product.name.split(' ').filter(function(word) {return word.match(split_keywords);}).length !== 0; } } 

HTML

 [...] {amp}lt;tr ng-repeat="product in products | filter:loseKeywordFilter(search) | orderBy:'name'"{amp}gt; {amp}lt;td{amp}gt;{{product.name}}{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;{{product.category}}{amp}lt;/td{amp}gt; {amp}lt;td{amp}gt;{{product.AddedBy}}{amp}lt;/td{amp}gt; {amp}lt;/tr{amp}gt; [...] 

https://jsfiddle.net/d4nh823j/