无法选择以前选择的选项

时间:2017-01-03 12:55:15

标签: javascript html angularjs angularjs-select

选择之前选择的选项后,

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没有改变,因此不会被解雇。

如何处理这种情况?

3 个答案:

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