angular.js:12520错误:[ng:areq]参数'clickable'不是函数,未定义

时间:2015-12-24 22:37:51

标签: angularjs

现在我已经读过,角度不允许全局控制器,但我不相信我正在使它全局化。更奇怪的是,我甚至在HTML文件中创建了一个脚本,它给了我同样的错误。我很肯定代码应该有用。

我正在使用Intellij并使用其模板通过凉亭生成一个小型锅炉板。

的index.html

<!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>

clickablecontroller.js

angular.module('myApplication',[])
    .controller('clickable',['$scope', function($scope){
        $scope.clickMe = function(){
            $scope.click = click++;
        }
    }]);

----------------更新1 ----------- app.js

'use strict';

// Declare app level module which depends on views, and components
angular.module('myApp', [
  'ngRoute',
  'myApp.view1',
  'myApp.view2',
  'myApp.version'
]).
config(['$routeProvider', function($routeProvider) {
  $routeProvider.otherwise({redirectTo: '/view1'});
}]);

Error

3 个答案:

答案 0 :(得分:0)

clickable是你的控制器。如果要输出click属性的值,则需要{{click}}。 Angular将知道控制器是什么,并显示该控制器中$ scope的click属性值。

答案 1 :(得分:0)

也许你可以试试这个:

var myModule = angular.module('myApplication', []);
myModule.controller('clickable', function ($scope) {
    $scope.clickMe = function(){
        $scope.click = click++;
    }
});

此外,

使用{{click}}代替{{clickable.click}}

答案 2 :(得分:0)

我必须在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>