使用Angularjs选择2下拉后调用单个函数

时间:2017-08-08 08:45:21

标签: javascript angularjs angular-ui-grid

我的Html视图:一旦用户选择了这两个选项,它应该调用控制器内的一个函数

<div class="col-lg-7">
        <ui-select on-select="onSelectedFetchDD($item)" ng-model="ctrl.GetPlatformRegionName.selected" theme="selectize" ng-disabled="ctrl.disabled" title="Choose a GetPlatformRegionName" append-to-body="true">
            <ui-select-match placeholder="-- Select --">{{$select.selected.dropDownText}}</ui-select-match>
            <ui-select-choices repeat="GetPlatformRegionName in ctrl.GetPlatformRegionNameList.value | filter: $select.search">
                  <span ng-bind-html="GetPlatformRegionName.dropDownText | highlight: $select.search"></span>
            </ui-select-choices>
        </ui-select>
    </div>

<div class="col-lg-7">
   <ui-select ng-model="ctrl.GetGsmName.selected" theme="selectize" ng-disabled="ctrl.disabled" title="Choose a GetGsmName" append-to-body="true">
       <ui-select-match placeholder="-- Select --">{{$select2.selected.dropDownText}}</ui-select-match>
       <ui-select-choices repeat="GetGsmName in ctrl.GetGSMNameList.value | filter: $select2.search">
            <span ng-bind-html="GetGsmName.dropDownText | highlight: $select2.search"></span>
              <small ng-bind-html="GetGsmName.dropDownValue | highlight: $select2.search"></small>
       </ui-select-choices>
   </ui-select>
</div>

我的控制器这是我控制器中的功能

$scope.fetchDD = function () {
    GSMList.then(function (result) {
        vm.GetGSMNameList = result.data;
    });

    PlatformMasterSchList.then(function (result) {
        vm.GetPlatformMasterSchNameList = result.data;
    });
};

3 个答案:

答案 0 :(得分:1)

我会在第二个ui-select中添加一个函数,为#selected构建一个计数器,并调用一个函数来检查是否已达到该数:

HTML

(忽略HTML中的空格,SO不断擦除它)

withValueBackReference

JS

RawContact

稍微简单的JS

这个方法会将检查器函数的增量处理为DRY代码:

<ui-select ng-model="ctrl.GetGsmName.selected" theme="selectize" 
        ng-disabled="ctrl.disabled" title="Choose a GetGsmName" append-to-body="true"
        on-selected="onSelectedFetchOther()">

允许更改选择的修改版本

var actOnSelectCount = 2;
var selectCount = 0;

$scope.onSelectedFetchOther = function() {
    selectCount++;
    doSomethingWhenNumSelected();
}

$scope.onSelectedFetchDD = function(item) {
    selectCount++;
    doSomethingWhenNumSelected();
}

function doSomethingWhenNumSelected = function() {
    if (selectCount === actOnSelectCount) {
        console.log("Doing something, 2 were selected!");
    }
}

答案 1 :(得分:0)

从两个下拉菜单中调用相同的函数on-change(ng-change)。 检查功能内部的条件并执行相应的操作。

答案 2 :(得分:0)

否则,您无需在控制器中创建任何功能即可完成此操作。首先,您的变量需要在控制器中启动:

$scope.GetPlatformRegionName = {}
$scope.GetGsmName = {}

在您看来,您可以使用&amp;&amp; 运算符,只有在定义了其他变量时才调用on-select函数,如下所示:

on-select="ctrl.GetPlatformRegionName.selected && yourFunctionToCall()"

对于第二个ui-select:

on-select="ctrl.GetGsmName.selected && yourFunctionToCall()"

然后只有在选择了booth ui-select时才会调用该函数。

Here是一名工作人员。