$filter не является функцией AngularJS
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $http, $filter) {
Выше приведен пример моего кода, где я пытаюсь использовать $http.get
а также $filter
внутри моего controller
,
Единственная проблема, когда я использую это так, журнал консоли выдает ошибку, которая говорит $filter is not a function
,
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
Когда я обмениваю их, появляется ошибка, $http is undefined
3 ответа
Когда вы используете
app.controller('myController', ['$scope', '$http', '$filter', function($scope, $filter, $http) {
переменная $filter
на самом деле является примером $http
, а также $http
это пример $filter
, На самом деле не имеет значения, что написано в function(...)
Титулы.
Здесь важен, например, порядок использования инъекционных препаратов.
app.controller('myController', ['$scope', '$http', '$filter', function(a, b, c) {
будет сопоставляться с экземплярами:
- а -> сфера
- b -> $ http
- c -> $ фильтр
Из угловых документов:
Поскольку Angular выводит зависимости контроллера из имен аргументов в функцию-конструктор контроллера, если бы вы минимизировали код JavaScript для контроллера PhoneListCtrl, все его аргументы функции также были бы минимизированы, и инжектор зависимости не смог бы определить услуги правильно.
Таким образом, используя обозначение массива для вашего контроллера, вы убедитесь, что код будет работать после минимизации кода.
Добавить фильтр после http и угловая версия также защищает, как вы собираетесь использовать фильтр.
plateFormController.$inject = ['$scope', '$http',
'$filter','$timeout', '$q', '$mdSidenav', '$log'];
function plateFormController($scope, $http,$filter, $timeout, $q) {
jsonByName=$filter('filter')($scope.json, { name: 'a' });
}
В моем случае ожидаемый объект списка данных является нулевым, гарантируя, что ожидаемый объект списка не является нулевым. Я могу избежать этой ошибки.