Je continue à avoir des erreurs de console '$ scope is not defined' pour ce code de contrôleur dans AngularJS:
angular.module('articles').controller('ArticlesController', ['$scope', '$routeParams', '$location', 'Authentication', 'Articles',
function($scope, $routeParams, $location, Authentication, Articles){
$scope.authentication = Authentication;
}
]);
$scope.create = function() { // THROWS ERROR ON THIS INSTANCE OF $SCOPE
var article = new Articles({
title: this.title,
content: this.content
});
article.$save(function(response) {
$location.path('articles/' + response._id);
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
Où devrais-je, dans mes fichiers AngularJS MVC, rechercher les problèmes liés à la définition incorrecte de $ scope?
Placez ce code dans le contrôleur: -
angular.module('articles').controller('ArticlesController', ['$scope', '$routeParams', '$location', 'Authentication', 'Articles',
function($scope, $routeParams, $location, Authentication, Articles){
$scope.authentication = Authentication;
$scope.create = function() { // THROWS ERROR ON THIS INSTANCE OF $SCOPE
var article = new Articles({
title: this.title,
content: this.content
});
article.$save(function(response) {
$location.path('articles/' + response._id);
}, function(errorResponse) {
$scope.error = errorResponse.data.message;
});
};
}
]);
Pour les autres utilisateurs de Google, vous obtiendrez cette erreur si vous oubliez les guillemets autour de $scope
lorsque vous annotez la fonction pour la minimisation.
app.controller('myCtrl', [$scope, function($scope) {
...
}]);
app.controller('myCtrl', ['$scope', function($scope) {
...
}]);
Il suffit de placer la fonction $ scope.create dans votre contrôleur. Pas dehors!
$ scope est défini uniquement dans les contrôleurs, chaque contrôleur ayant le sien. Donc, écrire $ scope en dehors de votre contrôleur ne peut pas fonctionner.
Vérifiez la variable d’étendue déclarée après la définition du contrôleur. Par exemple:
var app = angular.module('myApp','');
app.controller('customersCtrl', function($scope, $http) {
//define scope variable here.
});
Vérifiez la plage définie du contrôleur dans la page d'affichage.
Par exemple:
<div ng-controller="mycontroller">
//scope variable used inside these blocks
<div>