当我在promise.then中更新ng-model参数时,我在选择未调用时遇到ng-change问题。我的选择是:
<select ng-model="currentReport"
ng-options="rpt.ReportDisp for rpt in availableReports"
ng-change="updateDependent()"></select>
availableReports是这些对象的数组,由我的服务中的$ http调用检索。当呼叫结束时,我想确保选择第一个条目并执行代码:
webServices.getReports(user, menu1, menu2)
.then(function (result) {
$scope.availableReports = result.data.d;
$scope.currentReport = $scope.availableReports[0];
}
这会将select设置为1st报告,但ng-change不会调用函数updateDependent()。
另外,我尝试在.then中添加对updateDependent()函数的调用,如下所示。但是当函数被调用时,$ scope.currentReport是未定义的。
webServices.getReports(user, menu1, menu2)
.then(function (result) {
$scope.availableReports = result.data.d;
$scope.currentReport = $scope.availableReports[0];
updateDependent();
}
任何人都知道发生了什么事?
发现问题,我
函数更新updateDependent声明为$ scope.updateDependent()。所以我需要将http关联.then中的引用更改为$ scope.updateDependent()。
答案 0 :(得分:0)
我不确定从控制器更新时触发ng-change的规则,但是关于你的其他问题。
我会修改updateDependent以接受如下参数:
<select ng-model="currentReport"
ng-options="rpt.ReportDisp for rpt in availableReports"
ng-change="updateDependent(currentReport)"></select>
并在你的后端
webServices.getReports(user, menu1, menu2)
.then(function (result) {
$scope.availableReports = result.data.d;
$scope.currentReport = $scope.availableReports[0];
updateDependent($scope.currentReport);
}
我发现通过传入参数以提高可读性,更明确地了解函数的功能。此外,它简化了updateDependent的测试故事。