Подтвердить что ты не робот

Angularjs [ng: areq] Аргумент 'fn' не является функцией, получил строку

Я новичок в angular js..Я получаю ошибку follwing, пожалуйста, помогите мне

[ng: areq] Аргумент 'fn' не является функцией, получил строку

var app = angular.module('demo',[]);


app.config('$routeProvider',function($routeProvider){

    $routeProvider.when('/add',{
        templateUrl:'demo/add.html',
        controller:'addcontroller'
    }).
    when('/order',{
        templateUrl:'demo/order.html',
        controller:'ordercontroller'
    });

});

app.controller('addcontroller',function($scope){
    $scope.message="order";
});
app.controller('ordercontroller',function($scope){
    $scope.message="order";
});
4b9b3361

Ответ 1

Я думаю, что ошибка находится в блоке конфигурации, она должна быть:

app.config(function($routeProvider){
  // routeProvider config
});

или лучше:

app.config(['$routeProvider', function($routeProvider){
  // routeProvider config, allows minification
}]);

аннотации для корректной работы миниатюризации. Вы можете больше узнать об этом на документах AngularJS https://docs.angularjs.org/tutorial/step_05 Обратите внимание, что эта практика должна быть выполнена во всем приложении для правильной работы.

Ответ 2

Хотя это не связано напрямую с контекстом этого вопроса, это сообщение об ошибке также может быть вызвано тем, что блок разрешения возвращает что-то еще, кроме функции, например:

$stateProvider.state('mystate', {
    url: "/myurl",
    templateUrl: "mytemplate.html",
    controller: "MyController",
    resolve: {
        authenticatedUser: securityAuthorizationProvider.requireAuthenticatedUser
    }
});

Если securityAuthorizationProvider.requireAuthenticatedUser окажется undefined, вы можете получить эту ошибку.

Ответ 3

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

theApp.directive('theDirective', 'myService', ['$http', function ($http, myService) {}]);

Вместо этого:

theApp.directive('theDirective', ['$http', 'myService', function ($http, myService) {}]);

Обратите внимание, что моя служба была включена вне аннотации встроенного массива! Это было пронзительное движение с моей стороны, которое стоило мне слишком много времени.

Ответ 4

Для проблемы была определена зависимость factory вне массива. Скорее всего, вопрос о минимизации также был проблемой.

//Error in this
  angular
    .module('mymodule').factory('myFactory', 'thisconstant', function (thisconstant) {

});

Это зафиксировано на

//correct code
  angular
    .module('mymodule').factory('myFactory', ['thisconstant', function (thisconstant) {

}]);

Ответ 5

Я получил эту ошибку, не понимая, как анонимные функции и именованные функции обрабатываются в JavaScript.

Это вызывает ошибку:

angular.module("app").factory("myDataService", ['$resource', myDataService]);
var myDataService = function($resource) {
    return $resource('/url');
}

Я должен был либо сделать это:

var myDataService = function($resource) {
    return $resource('/url');
}
angular.module("app").factory("myDataService", ['$resource', myDataService]);

Или это:

angular.module("app").factory("myDataService", ['$resource', myDataService]);
function myDataService($resource) {
    return $resource('/url');
}

Подробнее о различии между анонимной функцией и названной функцией здесь

Ответ 6

В первой строке вам нужно использовать вот так:

var app = angular.module('demo', ['ngRoute']);

и используйте такую ​​маршрутизацию,

$routeProvider.when('/add').then({
        templateUrl:'demo/add.html',
        controller:'addcontroller'
    });

Просто попробуйте эти шаги один раз.

Ответ 7

Так как здесь были добавлены различные варианты использования, я подумал, что тоже добавлю свой. Я получил эту ошибку при переформатировании службы функций

angular
.app('myApp')
.service('MyService', function (){
  // do something
return MyService;
})

в объект класса:

export default class MyService { ... }

angular
    .app('myApp')
    .service('MyService', MyService);

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

export default class MyService {
  constructor(){
  // doing something
  }

  get() {
  return MyService;
  }
}

который исправил проблему для меня. :)