2015-03-09 3 views
0

Я все еще новичок в AngularJS, но я пытаюсь добавить фильтр на свои данные, но я не могу понять, как заставить его работать. Мои данные являются ассоциативным массивом, когда я добавляю обычный массив для тестирования, все это работает.Фильтр AngularJS не работает с моими данными: ассоциативный массив

Звоню директиву в HTML:

<dispatch data='listToDispatch' search="searchDispatch"></dispatch> 

Моя директива:

define(['dashboard/module', 'lodash'], function (module) { 

'use strict'; 

return module.registerDirective('dispatch', function() { 
    return { 
     controller: 'DashboardCtrl', 
     restrict: 'E', 
     scope: { 
      data: '=', 
      search: '=' 
     }, 
     template: '<div class="padding-dispatch" ng-repeat="(name,user) in data | filter:search">' + 
         '<strong>{{name}}</strong>' + 
         '{{search}}' + 
         '<div class="dispatch-charts" chartjsdoughnut="user[0]"></div>' + 
         '<div class="dispatch-charts" chartjsdoughnut="user[1]"></div>' + 
         '<div class="dispatch-charts" chartjsdoughnut="user[2]"></div>' + 
         '<div class="dispatch-charts" chartjsdoughnut="user[3]"></div>' + 
         '<hr />' + 
        '</div>' 
    } 
}); 

Мои данные, которые передаются в директиве:

$scope.dataPersons = 
    { 
     "Sidney": 
     [ 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 36, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 40, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is unique" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is unique" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ] 
     ], 
     "Cedric": 
     [ 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 76, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ] 
     ] 
    }; 
    $scope.dataVehicles = 
    { 
     "Xavier": 
     [ 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 36, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 40, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is unique" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is unique" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ] 
     ], 
     "Tarek": 
     [ 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 76, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ], 

      [ 
       { 
        value: 70, 
        color: "#1675a9", 
        highlight: "#1675a9", 
        label: "is in use" 
       }, 
       { 
        value: 30, 
        color: "#7eb3cf", 
        highlight: "#1675a9", 
        label: "is used" 
       } 
      ] 
     ] 
    }; 
+0

возможно дубликат [Как фильтровать (ключ, значение) с нг-повтора в AngularJs] (http://stackoverflow.com/questions/14788652/how-to- filter-key-value-with-ng-repeat-in-angleularjs) – seanhodges

ответ

0

В шаблоне директивы удалите слово «фильтр» и «:», которое следует за ним. Шаблон должен выглядеть следующим образом:

template: '<div class="padding-dispatch" ng-repeat="(name,user) in data | search">' + 
        '<strong>{{name}}</strong>' + 
        '{{search}}' + 
        '<div class="dispatch-charts" chartjsdoughnut="user[0]"></div>' + 
        '<div class="dispatch-charts" chartjsdoughnut="user[1]"></div>' + 
        '<div class="dispatch-charts" chartjsdoughnut="user[2]"></div>' + 
        '<div class="dispatch-charts" chartjsdoughnut="user[3]"></div>' + 
        '<hr />' + 
       '</div>' 
+0

это не работает: s – Sidneyvp

+0

В вашем коде, где вы инициализируете listToDispatch? Если нет, то в вашем какое значение оно удерживает? –

Смежные вопросы