Почему мой AngularJS не работает, это моя функция фильтра? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь работать с моим ng-repeat с моим фильтром. Это не работает, как я надеялся. Мне было интересно, если это не возможно делать то, что я пытаюсь сделать ?? Мой HTML:

<input type="text" ng-model="search.text" class="form-control" id="search" placeholder="Search">

<div class='col-md-12' ng-repeat='(key,value) in cropplans | contains:search.text'> <h4> Title: key</h4>
</div>

А вот мой контроллер и фильтр:

aggriApp.filter('contains', function() {
  return function(values, field) {
        var result = {};
  field = field.toLowerCase()
  angular.forEach(values, function(key, value) {
      if(value.company_name.toLowerCase().indexOf(field) >= 0){
           result[key] = value
            }
        });
  return result

РЕДАКТИРОВАТЬ: Когда я набираю в поиске ввода, я не получаю никаких изменений с фильтром, который я применил. Если поиск не соответствует, я должен получить 0 результатов, верно?

EDIT: $scope.cropplans - это объект, похожий на:

Object
AkshaYagna: Array(1)
0:
$$hashKey: "object:2684"
active: true
area: "0.00000"
block: {id: 230, name: "default", farm: {…}}
certification: null
closing_reason: null
company_name: "AkshaYagna"
created: "2019-01-17T21:04:23.605311Z"
crop_forecast: [{…}]
estimated_cases_count: 2000
estimated_harvest_date: "2019-01-17"
estimated_harvest_date_end: "2019-02-28"
foodhub: 409
foodhub_seller: 3752
foodhub_transport_time: 0
id: 828
modified: "2019-01-17T21:04:23.605319Z"
planting_date: null
plu_code: {id: 12891, commodity: "Conventional Baby Bok Choy", variety: "Shanghai", size: "30#", package: "Cartons", …}
received_cases: null
received_on: null
user: {id: 4022, email: "asus@lenovo.com", first_name: "Child.farm", last_name: "06", telephone: null, …}
__proto__: Object
received: 0
length: 1
__proto__: Array(0)
Child.farm03: [{…}, received: 0]
Samuel Gibbs: (3) [{…}, {…}, {…}, received: 0]
shadow test: (2) [{…}, {…}, received: 0]
__proto__: Object

1 Ответ

0 голосов
/ 18 января 2019

Для фильтрации вашего массива по названию компании нет необходимости писать собственный фильтр. Вы можете использовать фильтр фильтра angularjs с объектом. Попробуйте следующее

<input type="text" ng-model="search.text" class="form-control" id="search" placeholder="Search">

<div class='col-md-12' ng-repeat="(key,value) in cropplans | filter : {'company_name' : search.text}"> 
    <h4> {{value}}</h4>
</div>

Он нечувствителен к регистру, поэтому вам не нужно беспокоиться о преобразовании в нижний регистр / верхний регистр.

...