ng-change循环事件相互调用下拉列表

时间:2015-07-09 20:03:09

标签: angularjs

我有一个非常有趣的问题。有2个下拉菜单,有选项 0 =排除,1 =包含,3 =仅 当用户想要从这2个列表中选择3时,另一个应该更改为0-Exclude。但是当我尝试这个代码时,它会相互调用,结果所选的(仅限3个)下拉列表显示0-Exclude和其他3-Only,这是相反的。

这是代码

Controller.js

$scope.lockedChanged = function() {
    if ($scope.data.lockedGldata == 2) {
        $scope.data.deactivatedGldata = 0;
    }
};

$scope.deactivatedChanged = function () {
    if ($scope.data.deactivatedGldata == 2) {
        $scope.data.lockedGldata = 0;
    }
};

View.html

    <div class="form-group">
        <label for="lockedGlOption" class="col-sm-3 control-label">Locked G/L:</label>
        <div class="col-sm-3">
            <select class="form-control" required ng-init="data.deactivatedGldata = 0"
                    id="lockedGlOption"
                    ng-model="data.deactivatedGldata"
                    ng-options="o.id as o.text for o in lockedGlOptions"
                    ng-change="lockedChanged()">
                <option value="" disabled>Select an option...</option>
            </select>
        </div>
    </div>
    <div class="form-group">
        <label for="DeactivatedGlOption" class="col-sm-3 control-label">Deactivated G/L:</label>
        <div class="col-sm-3">
            <select class="form-control" required ng-init="data.lockedGldata = 0"
                    id="DeactivatedGlOption"
                    ng-model="data.lockedGldata"
                    ng-options="o.id as o.text for o in DeactivatedGlOptions"
                    ng-change="deactivatedChanged()">
                <option value="" disabled>Select an option...</option>
            </select>
        </div>
    </div>

1 个答案:

答案 0 :(得分:1)

我认为,当你点击第一个选择时。它监听模型deactivatedGlData的更改,并且在lockedChanged函数中,分配给此下拉列表的ng-change,则存在不匹配。 它听取另一个下拉菜单,而不是自己的下拉菜单,这就是它反向呈现的原因。

您可以尝试切换ng-change的顺序吗?

而不是按顺序排列两个下拉列表:

            ng-change="lockedChanged()">
            ng-change="deactivatedChanged()">

写:

            ng-change="deactivatedChanged()">
            ng-change="lockedChanged()">