ng-change
不会被触发。
因此,我无法处理相同的下一个选择。
<select ng-model="selectedOption" ng-change="handleSelection()">
<option value="A" selected>A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
我想向用户显示最后选择的选项,并希望处理相同的选项。
但由于ng-model
在下一个相同的选项选择ng-change
没有改变,因此不会被解雇。
如何处理这种情况?
答案 0 :(得分:0)
如果值正在变化,您应该使用'ng-change'。在您的情况下,您希望在未更改值时处理事件,因此您可以使用“ng-click”来处理相同的选项选择。
演示: http://jsfiddle.net/Despotix/vgw5bxrq/3/
<div ng-controller="MyCtrl">
<select ng-model="selectedOption" ng-click="click()">
<option value="A" selected>A</option>
<option value="B" class="option">B</option>
<option value="C" class="option">C</option>
<option value="D" class="option">D</option>
</select>
{{seletedQueue}}
</div>
-
var myApp = angular.module('myApp', []);
function MyCtrl($scope) {
$scope.seletedQueue = '';
$scope.click = function(item) {
$scope.seletedQueue += '->' + $scope.selectedOption;
}
}
您可以选择两次(或更多)相同的选项: - &GT; B-&GT; B-&gt;一种
答案 1 :(得分:0)
只需检查点击次数,即可完成ng-change
:
click event
后,第一select
次加注
选择一个项目后,第二个click event
会加注
我们使用blur event
清除失去焦点后的点击次数
通过这种方式,您将获得没有change event
和without selecting new item
的所选项目:
<select ng-model="selectedOption" ng-click="handleSelection()" ng-blur="resetClickCount()">
<option value="A" selected>A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select>
-
app.controller("myCtrl", function($scope) {
$scope.clickCount = 0;
$scope.handleSelection = function() {
$scope.clickCount++;
if ($scope.clickCount==2) {
alert($scope.selectedOption);
$scope.clickCount = 0;
}
}
$scope.resetClickCount = function() {
$scope.clickCount = 0;
}
});
答案 2 :(得分:0)
尝试在控制器中定义 selectedOption 值,而不是使用“已选择”属性。
要跟踪之前选择的选项,您可以使用$ scope变量并在 handleSelection()函数的末尾更改它。 这里的工作演示 - jsfiddle.net `
BPMEI/static/css/bootstrap.css