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";
});
Ответы
Ответ 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;
}
}
который исправил проблему для меня. :)