我有一个包含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()
在它应该的时候不会发射。我怎样才能做到这一点?有没有办法触发这个事件?
谢谢!
答案 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)
试试这个: -
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;
答案 4 :(得分:0)
在select标签上你可以做ng-change而不是ng-click。但如果你想捕获ng-click,请将你的select标签保存在p或div标签内,并使用ng-click这些标签。如果p或div标签内有多个标签,则可能无法区分点击。