2016-10-12 136 views
0

我有一个选择框,其中包含ng-model指令。我想在用户点击选择框(在选择选项之前会触发)时触发一个事件。AngularJS选择框 - ngClick不开火

<select id="count" name="count" class="form-control" ng-click="vm.clickCountSelector();" ng-model="vm.count" 
ng-options="c.name for c in vm.getEligibleCountList()" required validation-messages></select> 

vm.clickCountSelector()不应该触发它应该。我怎样才能做到这一点?有什么办法可以触发这个事件吗?

谢谢!

+0

你调试了代码吗?它显示的错误是什么? –

回答

2

不知道你想达到什么,但我会建议绑定到选择元素的ng-change。在您选择一个选项后,ng-click将会触发。

如果你真的想得到一个事件,你可以使用ng-mousedown。

var ngApp = angular.module('ngAppl',[]); 
 

 
function aControlla($scope){ 
 
    $scope.count = function(){ 
 
     alert("It works!"); 
 
    } 
 
    
 
    $scope.values = [ 
 
     {Name: "Entry 1"}, 
 
     {Name: "Entry 2"}, 
 
     {Name: "Entry 3"}, 
 
     {Name: "Entry 4"} 
 
    ]; 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0/angular.min.js"></script> 
 
<div ng-app="ngAppl"> 
 
    <div ng-controller="aControlla"> 
 
     
 
     <select ng-mousedown="count(val)" ng-model="val"> 
 
      <option ng-repeat="val in values" value ={{val.Name}}> 
 
      {{val.Name}} 
 
      </option> 
 
     </select>   
 
    </div> 
 
</div>

+0

谢谢!是的'ng-mousedown'工作! – masterFly

0

您应该使用ng-change而不是ng-click。

+0

但我想知道用户是否点击选择框。 – masterFly

+0

然后你应该继续检查为什么vm.clickCountSelector()没有触发。就像你说的那样,它现在只有警报,但也许你甚至没有注意到该功能被触发,因为你阻止了浏览器的警报。我对你的建议是总是用console.log(“Something”)调试你的代码,然后看看你的控制台,看看是否发生了一些事情。 – alxbxbx

0

没有你想在你的函数的调用添加$事件?

vm.clickCountSelector($event) 
0

试试这个: -

angular.module('app', []).controller('NgListController', function($scope) { 
 
    $scope.items = [{ 
 
    name: 'Item1' 
 
    }, { 
 
    name: 'Item2' 
 
    }]; 
 

 

 
    $scope.clickCountSelector = function() { 
 

 
    alert('select clicked'); 
 
    } 
 

 

 

 
});
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script data-require="[email protected]*" data-semver="1.3.7" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
</head> 
 

 
<body ng-app="app"> 
 
    <fieldset ng-controller="NgListController"> 
 
    <select id="count" name="count" class="form-control" ng-click="clickCountSelector();" ng-model="vm.count" ng-options="c.name for c in items" required validation-messages></select> 
 
    </fieldset> 
 
</body> 
 

 
</html>

0
上选择标签,你可以做NG-变化,而不是NG-点击

。但是如果你想捕获点击它,请将你的选择标记保存在p或div标记中,并使用ng单击这些标记。如果在p或div标签内有多个标签,则可能无法区分点击。