我是角度js的新手。我遇到了以下错误,请帮帮我
[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";
});
答案 0 :(得分:31)
我认为错误发生在配置块中,它应该是:
app.config(function($routeProvider){
// routeProvider config
});
或更好:
app.config(['$routeProvider', function($routeProvider){
// routeProvider config, allows minification
}]);
注释可以让缩小工作正常。您可以在AngularJS docs https://docs.angularjs.org/tutorial/step_05上阅读更多相关信息。 请注意,需要在整个应用程序中完成此练习才能正常工作。
答案 1 :(得分:13)
虽然与此问题的上下文没有直接关系,但此错误消息也可能由解析块返回除函数之外的其他内容引起,如下所示:
$stateProvider.state('mystate', {
url: "/myurl",
templateUrl: "mytemplate.html",
controller: "MyController",
resolve: {
authenticatedUser: securityAuthorizationProvider.requireAuthenticatedUser
}
});
如果securityAuthorizationProvider.requireAuthenticatedUser
恰好未定义,则可能会出现此错误。
答案 2 :(得分:3)
我知道这是一篇较旧的帖子,但我认为我会通过这个确切的错误为我的代码做出错误。我正以这种方式向我的控制器注入一个服务:
theApp.directive('theDirective', 'myService', ['$http', function ($http, myService) {}]);
而不是:
theApp.directive('theDirective', ['$http', 'myService', function ($http, myService) {}]);
请注意,我的服务包含在内联数组注释的外部!对我而言,这是一个愚蠢的举动,花费了太多时间。
答案 3 :(得分:2)
问题是在数组外定义工厂依赖。最有可能的是缩小也是一个问题。
//Error in this
angular
.module('mymodule').factory('myFactory', 'thisconstant', function (thisconstant) {
});
由
修复//correct code
angular
.module('mymodule').factory('myFactory', ['thisconstant', function (thisconstant) {
}]);
答案 4 :(得分:1)
我误解了在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');
}
更多关于匿名函数和命名函数here
之间的区别答案 5 :(得分:1)
在第一行你需要像这样使用
var app = angular.module('demo', ['ngRoute']);
并使用像这样的路由,
$routeProvider.when('/add').then({
templateUrl:'demo/add.html',
controller:'addcontroller'
});
只需尝试一次这些步骤。
答案 6 :(得分:0)
由于这里添加了各种用例,所以我想我也要添加我的。重新格式化功能服务时出现此错误
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;
}
}
为我解决了这个问题。 :)