AngularJS选择框 - ngClick不触发

时间:2016-10-12 11:46:55

标签: javascript html angularjs

我有一个包含ng-model指令的选择框。我想在用户点击选择框时触发一个事件(在选择选项之前会触发)。

<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()在它应该的时候不会发射。我怎样才能做到这一点?有没有办法触发这个事件?

谢谢!

5 个答案:

答案 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>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您是否尝试在函数调用中添加$事件?

vm.clickCountSelector($event)

答案 3 :(得分:0)

试试这个: -

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


  $scope.clickCountSelector = function() {

    alert('select clicked');
  }



});
&#13;
<!DOCTYPE html>
<html>

<head>
  <script data-require="angular.js@*" 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>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

在select标签上你可以做ng-change而不是ng-click。但如果你想捕获ng-click,请将你的select标签保存在p或div标签内,并使用ng-click这些标签。如果p或div标签内有多个标签,则可能无法区分点击。