2016-10-12 98 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標籤內有多個標籤,則可能無法區分點擊。