Angularjs angular.js:12520错误:[ng:areq]参数';可点击';不是函数,未定义
现在我已经读到angular不允许全局控制器,但我不相信我正在使其全局化。更奇怪的是,我甚至在HTML文件中创建了一个脚本,它给了我同样的错误。我确信代码应该是有效的 我使用Intellij并使用其模板通过bower生成一个小锅炉板 index.htmlAngularjs angular.js:12520错误:[ng:areq]参数';可点击';不是函数,未定义,angularjs,Angularjs,现在我已经读到angular不允许全局控制器,但我不相信我正在使其全局化。更奇怪的是,我甚至在HTML文件中创建了一个脚本,它给了我同样的错误。我确信代码应该是有效的 我使用Intellij并使用其模板通过bower生成一个小锅炉板 index.html <!DOCTYPE html> <!--[if lt IE 7]> <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8 lt-ie7">
<!DOCTYPE html>
<!--[if lt IE 7]> <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html lang="en" ng-app="myApp" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html lang="en" ng-app="myApp" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="myApp" class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>My AngularJS App</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="bower_components/html5-boilerplate/dist/css/normalize.css">
<link rel="stylesheet" href="bower_components/html5-boilerplate/dist/css/main.css">
<link rel="stylesheet" href="app.css">
<script src="bower_components/html5-boilerplate/dist/js/vendor/modernizr-2.8.3.min.js"></script>
</head>
<body ng-app="myApplication">
<ul class="menu">
<li><a href="#/view1">view1</a></li>
<li><a href="#/view2">view2</a></li>
</ul>
<div ng-controller="clickable">
<input type="button" value="Click Me" ng-click="clickMe()">
{{clickable.click}}
</div>
<!--[if lt IE 7]>
<p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
<![endif]-->
<div ng-view></div>
<div>Angular seed app: v<span app-version></span></div>
<!-- In production use:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
-->
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<script src="app.js"></script>
<script src="view1/view1.js"></script>
<script src="view2/view2.js"></script>
<script src="components/version/version.js"></script>
<script src="components/version/version-directive.js"></script>
<script src="components/version/interpolate-filter.js"></script>
<script src="controllers/clickablecontroller.js"></script>
</body>
</html>
----------------更新1-----------
app.js
您的控制器是可点击的。如果要输出click属性的值,则需要{{click}。Angular将知道控制器是什么,并显示该控制器中$scope的click属性的值。也许您可以尝试以下方法:
var myModule = angular.module('myApplication', []);
myModule.controller('clickable', function ($scope) {
$scope.clickMe = function(){
$scope.click = click++;
}
});
此外,
使用
{{click}}
代替{{clickable.click}
我的apps.js文件中必须有我的新模块
'use strict';
// Declare app level module which depends on views, and components
angular.module('myApp', [
'ngRoute',
'myApp.view1',
'myApp.view2',
'myApp.version',
'myApplication'
]).
config(['$routeProvider', function($routeProvider) {
$routeProvider.otherwise({redirectTo: '/view1'});
}]);
然后我不得不声明click是一个变量,如下所示:
angular.module('myApplication',[])
.controller('clickable',['$scope', function($scope){
console.log("I am in the controller")
var click = 0
$scope.clickMe = function(){
$scope.click = click++;
}
}]);
然后在我的index.html文件中,我可以简单地使用:
<div ng-controller="clickable">
<input type="button" value="Click Me" ng-click="clickMe()">
{{click}}
</div>
{{点击}
这取决于您在app.js中拥有的内容。根据您提供的详细信息,我们不确定,但您可以尝试从clickablecontroller.js中的模块部分中删除,[]
部分。因此它将变成angular.module('myApplication').controller(…)
。使用方括号重新定义应用程序,如果没有方括号,则是引用现有的应用程序。此外,您创建了两个带有ng app
标记的元素,请尝试删除一个奇数one@AlexSzabó请参见更新1。我试着取出,[]但也不起作用。同样的错误不起作用,我已经读到使用上述方法是一种不好的做法。@Drew1208很抱歉,我的建议对你没有帮助,但我没有意识到这是一种不好的做法。我是这样写的,你能告诉我你从哪里读到的吗?@Drew1208我不知道你把我的应用程序当作了你的ng应用程序。我想知道是不是这个错误让你认为这是一个坏习惯。我编辑了答案,你可以再试一次。我一直在使用谷歌赞助的教程。。在高级教程中,他们讨论了为什么它不好,并使用了我尝试使用的方法。您创建了两个ng应用程序模块,angular.module('myApp',[…])
和angular.module('myApplication',[])
,分别带有标签
。只留下一个。然后将您的myApplication
模块放在myApp
名称空间中,例如将angular.module('myApplication',[])
替换为angular.module('myApp.clickable',[])
。并将依赖项中的模块名称从'myApplication'
更改为myApp。可单击
angular.module('myApplication',[])
.controller('clickable',['$scope', function($scope){
console.log("I am in the controller")
var click = 0
$scope.clickMe = function(){
$scope.click = click++;
}
}]);
<div ng-controller="clickable">
<input type="button" value="Click Me" ng-click="clickMe()">
{{click}}
</div>