AngularJS — доступ к $scope из контроллера в пользовательском фильтре

У меня есть controller с различными $scopes. Мне нужно получить доступ к одной из этих $scopes в пользовательском фильтре:

app.controller('AppController',
    function($scope) {
      $scope.var1 = 'Some data1';
      $scope.var2 = 'Some data2';
    }
  );

app.filter('myCustomFilter', function ($filter) {

  return function (date) {
    var date = date;
  };
});


<tr ng-repeat="data in MyData" ng-class="{true: 'green', false:'red'}[data.Date | myCustomFilter]">

</tr>

Как я могу передать $scope.var1 в свой myCustomFilter??


person Oam Psy    schedule 30.10.2014    source источник
comment
Ненавижу придираться, но у вас в контроллере 1 $scope с разными переменными, а не разные $scopes.   -  person wvdz    schedule 30.10.2014
comment
@popovitsj - спасибо, что указали на это, это всего лишь пример.   -  person Oam Psy    schedule 30.10.2014
comment
Возможный дубликат Переменные области доступа из фильтра в AngularJS   -  person Icarus    schedule 30.03.2017


Ответы (2)


Вы должны предоставить требуемый атрибут области для фильтра.

Вы можете сделать это так:

Фильтр:

app.filter('myCustomFilter', function ($filter) {

  return function (date,myVar1) {
/* Do some stuff with myVar1 */
  };
});

HTML:

<tr ng-repeat="data in MyData" ng-class="{true: 'green', false:'red'}[data.Date | myCustomFilter:var1]">

</tr>
person Julien    schedule 30.10.2014

person    schedule
comment
Пробовал, возвращается undefined. - person Oam Psy; 30.10.2014
comment
вам нужно передать область, например myCustomFilter:this, если вам нужно передать только ту, которую вы можете сделать, например myCustomFilter:var1. пожалуйста, проверьте - person Kalhan.Toress; 30.10.2014