2015-07-21 33 views
0

对于下面的HTML和JS控制器,为什么'clear'按钮不能触发该函数?AngularJS - 控制器内的功能没有被调用,因为我期望在简单的例子中

<html> 

<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script> 
    <script src="app.js"></script> 
</head> 

<body ng-app="app" ng-controller="resetController as reset"> 
    <div> 
    <label>Name:</label> 
    <input type="text" ng-model="yourName" placeholder="Enter a name here"> 
    <button ng-click="clearName">Clear</button> 
    <hr> 
    <h1>Hello {{yourName}}!</h1> 
    </div> 
</body> 

</html> 

而且app.js文件

angular.module('app', []) 
.controller('resetController', function($scope) { 
    $scope.yourName = 'Start'; 

    $scope.clearName = function(){ 
    console.log('clearing name...'); 
    $scope.yourName = ''; 
    }; 

}); 
+2

'NG点击= “clearName()”' – Phil

回答

2

clearName()是一个函数,所以你需要括号。

<button ng-click="clearName()">Clear</button> 
2

我相信你缺少“()”,我相信你写的功能,如果它被调用,例如

<button ng-click="clearName()">Clear</button>

此外,我可以看到你正在使用的controllerAS语法,所以你通常会结了:

<button ng-click="reset.clearName()">Clear</button>

不过,我认为你需要绑定的功能在这种情况下控制器而不是范围对象。例如

angular.module('app', []) 
.controller('resetController', function() { 
    var self = this; 
    self.yourName = 'Start'; 

    self.clearName = function(){ 
    console.log('clearing name...'); 
    self.yourName = ''; 
    }; 

}); 

这是一个很长的阅读,但看看https://github.com/johnpapa/angular-styleguide

祝你好运。

+0

你在'clearName'函数定义留下了'$ scope' ... – sfletche

+0

良好的通话,感谢sfletche – Sean

相关问题