2014-05-12 4 views
20

Ich bin neu in Winkel js..I bin immer Fehler follwing mir bitte helfenAngularJS [ng: AREQ] Argument 'fn' ist keine Funktion, bekam Zeichenfolge

[ng: AREQ] Argument 'fn' keine Funktion ist, bekam String

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

Wo und wann haben Sie diesen Fehler? –

Antwort

29

ich denke, der Fehler im Konfigurationsblock ist, sollte es entweder:

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

oder besser:

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

Die Annotationen dienen der Vereinheitlichung, um korrekt zu funktionieren. Sie können mehr darüber auf AngularJS Dokumente lesen https://docs.angularjs.org/tutorial/step_05 Bitte beachten Sie, dass diese Praxis in der ganzen App durchgeführt werden muss, um richtig zu arbeiten.

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

wenn securityAuthorizationProvider.requireAuthenticatedUser passiert undefiniert,:

9

Obwohl nicht direkt an den Rahmen dieser Frage im Zusammenhang, kann diese Fehlermeldung auch durch einen Entschluss Block etwas anderes als eine Funktion der Rückkehr, wie diese verursacht werden Sie können diesen Fehler erhalten.

3

Ich weiß, dass dies ein älterer Beitrag ist, aber ich dachte, ich würde mit diesem genauen Fehler beitragen, was mit meinem Code falsch war. Ich war die Injektion einen Service in meinen Controller auf diese Weise:

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

Statt dem:

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

Beachten Sie, dass mein Dienst außerhalb der Inline-Array Annotation enthalten war! Es war eine knochenharte Bewegung, die mich viel zu viel Zeit gekostet hat.

0

Ich habe diesen Fehler bekommen, indem ich missverstanden habe, wie anonyme Funktionen und benannte Funktionen in JavaScript behandelt werden.

Dies verursacht den Fehler:

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

ich entweder das getan haben sollte:

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

Oder diese:

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

Mehr über den Unterschied zwischen anonymen Funktion und benannt Funktion here

1

In erster Linie, die Sie wie diese verwenden müssen einmal,

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

und verwenden Sie die Routing-Sache wie diese,

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

Probieren Sie diese Schritte.

1

Für das Problem war Fabrikabhängigkeit außerhalb des Arrays zu definieren. Höchstwahrscheinlich war die Minifizierung auch ein Problem.

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

}); 

Das von

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

}]); 
Verwandte Themen