Javascript 我的控制器[AngularJs]中出错
我收到以下错误消息:参数“MainController”不是函数,未定义 这是我的mainController.js文件:Javascript 我的控制器[AngularJs]中出错,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,我收到以下错误消息:参数“MainController”不是函数,未定义 这是我的mainController.js文件: angular.module("elcomaApp", []).controller('MainController', ['$scope', 'ElcomaService', function($scope, ElcomaService){ $scope.name = 'Natanael Santos'; console.log($scope.na
angular.module("elcomaApp", []).controller('MainController', ['$scope', 'ElcomaService', function($scope, ElcomaService){
$scope.name = 'Natanael Santos';
console.log($scope.name);
ElcomaService.sucess(function(data){
$scope.elcomaData = data;
})
}]);
这是我的app.js文件:
var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']);
app.config(function($routeProvider){
$routeProvider.when('/', {
controller: 'MainController',
templateUrl: 'views/timeline.html'
}).otherwise({
redirectTo: '/'
});
});
这是我的service.js文件:
angular.module("elcomaApp", []).factory('ElcomaService', ['$http', function($http){
return $http.get('http://vagalumewifi.com.br/timeline.json')
.success(function(data){
})
.error(function(err){
return err;
});
}]);
和我的index.html文件:
<!DOCTYPE html />
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Angular Material style sheet -->
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css">
</head>
<body ng-app="elcomaApp" ng-controller="MainController" ng-cloak>
<md-toolbar class="md-hue-2">
<div class="md-toolbar-tools">
<md-button class="md-icon-button" aria-label="Settings" ng-disabled="true">
<md-icon md-svg-icon="img/icons/menu.svg"></md-icon>
</md-button>
<h2>
<span>{{ name }}</span>
</h2>
<span flex></span>
<md-button class="md-icon-button" aria-label="Favorite">
<md-icon md-svg-icon="img/icons/favorite.svg" style="color: greenyellow;"></md-icon>
</md-button>
<md-button class="md-icon-button" aria-label="More">
<md-icon md-svg-icon="img/icons/more_vert.svg"></md-icon>
</md-button>
</div>
</md-toolbar>
<div ng-view></div>
<!-- Angular Material requires Angular.js Libraries -->
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script>
<!-- Angular Material Library -->
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script>
<script src="app.js"></script>
<script src="controllers/mainController.js"></script>
<script src="services/elcomaService.js"></script>
</body>
</html>
{{name}}
在此语句中,删除MainController
它已在elcomaApp上定义,无需DI。它始终可用
更正:
`
在此语句中,删除MainController
它已在elcomaApp上定义,无需DI。它始终可用
更正:
`
在app.js文件中,第一行
var-app=angular.module(“elcomaApp”、['MainController','ngMaterial','ngRoute']);
表示您的应用程序依赖于“MainController”模块,而“MainController”模块又依赖于您的应用程序。这行不通。您只需在应用程序中为外部模块添加依赖项。您的模块是“elcomaApp”,并且已经包含了“主控制器”
把那行改成
var-app=angular.module(“elcomaApp”、“ngMaterial”、“ngRoute”)代码>
它应该可以工作。在app.js文件的第一行
var-app=angular.module(“elcomaApp”、['MainController','ngMaterial','ngRoute']);
表示您的应用程序依赖于“MainController”模块,而“MainController”模块又依赖于您的应用程序。这行不通。您只需在应用程序中为外部模块添加依赖项。您的模块是“elcomaApp”,并且已经包含了“主控制器”
把那行改成
var-app=angular.module(“elcomaApp”、“ngMaterial”、“ngRoute”)代码>
它应该可以工作。为什么你的MainController
被列为你自己应用程序的依赖项?您已经在elcomaApp
模块中编写了它。为什么您的MainController
被列为您自己应用程序的依赖项?您已经在elcomaApp
模块中编写了它。问题是覆盖模块定义。谢谢:dw为什么在controler文件:angular.module(“elcomaApp”,[]).controller中放置“[]”是正确的…为了初始化或创建新模块,应该提供[]
空的DI或DI列表。要获取此模块,只需要模块名称。问题是覆盖模块定义。谢谢:dw为什么在controler文件:angular.module(“elcomaApp”,[]).controller中放置“[]”是正确的…为了初始化或创建新模块,应该提供[]
空的DI或DI列表。要获取此模块,只需要模块名。
var app = angular.module("elcomaApp", ['MainController', 'ngMaterial', 'ngRoute']);
angular.module("elcomaApp", []).factory` // will override the module defination
`angular.module("elcomaApp").factory('` //correct way