AngularJS - accessing $ scope from controller in custom filter
I have controller
with different $scopes
. I need to access one of these $ scopes in a custom filter:
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>
How can I pass $ scope.var1 to mine myCustomFilter
??
+3
source to share
3 answers
You must provide the desired scope attribute for the filter.
You can do it like this:
Filter:
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>
+4
source to share
var app = angular.module('app', []);
app.controller('AppController',
function($scope) {
$scope.var1 = 2;
$scope.var2 = 3;
$scope.MyData = [{
Date: 1
}, {
Date: 2
}, {
Date: 3
}]
}
);
app.filter('myCustomFilter', function($filter) {
return function(date, scopeValue) {
var date = date;
return date * scopeValue
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body>
<div ng-app="app">
<div ng-controller="AppController">
<li ng-repeat="data in MyData">
Date: {{data.Date}} | Date after myCustomFilter: {{data.Date | myCustomFilter : var1}}
</li>
</div>
</div>
</body>
+1
source to share