app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
Ce qui précède est un exemple de code dans lequel j'essaie d'utiliser $http.get
ainsi que $filter
dans ma controller
.
Le seul problème est que lorsque je l'utilise comme cela, le journal de la console génère une erreur indiquant $filter is not a function
.
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
Lorsque je les échange, cela génère une erreur qui $http is undefined
Quand vous utilisez
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
la variable $filter
est en fait une instance de $http
et $http
est une instance de $filter
. En réalité, peu importe ce qui est écrit dans les paramètres function(...)
.
Ce qui est important ici, c'est l'ordre des injectables que vous utilisez, par exemple
app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {
mappera aux instances:
De docs angulaires:
Puisque Angular déduit les dépendances du contrôleur à partir des noms des arguments de la fonction constructeur du contrôleur, si vous réduisez le code JavaScript du contrôleur PhoneListCtrl, tous ses arguments de fonction le seront également, ainsi ne serait pas en mesure d'identifier les services correctement.
Donc, en utilisant la notation de tableau pour votre contrôleur, vous vous assurez que le code fonctionnera une fois le code minifié.
add filter après http et la version angulaire défendent également la manière dont vous allez utiliser le filtre.
plateFormController.$inject = ['$scope', '$http',
'$filter','$timeout', '$q', '$mdSidenav', '$log'];
function plateFormController($scope, $http,$filter, $timeout, $q) {
jsonByName=$filter('filter')($scope.json, { name: 'a' });
}
Dans mon cas, l'objet de liste de données attendu est null, en vérifiant que l'objet de liste attendu n'est pas null. Je suis capable d'éviter cette erreur.