AngularJs:如何在下拉列表中为ng-otons的defaut选择值触发ng-change事件

时间:2016-10-30 22:05:46

标签: angularjs

我有两个下拉菜单。根据第一个下拉值的选择,第二个下拉列表将填充其值。从第二个下拉值中选择值后,它将调用ng-change事件并获取数据并在表中显示信息。这很好。

但我需要的是,在第二次下来,我必须设置一个默认值,需要触发ng-change并在表格中显示数据。

以下是下拉列表的HTML代码。

<SELECT ng-model="selectedRS" ng-options="x as x.rsName for x in rsData" data-ng-change="getSPList(selectedRS)">

<SELECT  ng-model="selectedSP" ng-options="x as x.displayName for x in spInfoList" ng-change="getSPInfo(selectedSP)"></SELECT>

这里我有一个表格来显示来自getSPInfo方法的信息

我的控制器方法getSPInfo是

$scope.getSPInfo = function(selectedSubproduct) {
        $http({
                    method: 'GET',
                    url: getSPInfo.web ',params: {rsId: selectedSP.rsId,spId : selectedSP.id}}).
                    success(function(data, status, headers, config) {

                        $scope.spInfo = data;
                    }).
                    error(function(data, status, headers, config) {

                    });

                }

提前致谢!!

1 个答案:

答案 0 :(得分:0)

这只是您必须手动触发的其中一项内容。 ng-change不会触发它,因为在控制器初始化之前,不会监视该值。

在您的控制器中,您可以手动调用该功能:

$scope.getSPInfo(your_default_value);

或者我喜欢将它包装在onInit函数中,这样任何人都可以清楚地看到代码发生了什么。您还可以在此处输入在初始化控制器时需要运行的任何其他代码。

function onInit(){
    $scope.getSPInfo(your_default_value);
}
onInit(); 

如果您使用ui-router进行路由,则第三个选项是将其作为状态定义对象的一部分放入onEnter函数中。这将在您进入该状态时运行该功能。