Javascript ng变更不称为承诺中的we ng模型更新。然后
当我更新promise中的ng模型参数时,select中的ng更改没有被调用,我遇到了一个问题。然后。我的选择是:Javascript ng变更不称为承诺中的we ng模型更新。然后,javascript,angularjs,promise,Javascript,Angularjs,Promise,当我更新promise中的ng模型参数时,select中的ng更改没有被调用,我遇到了一个问题。然后。我的选择是: <select ng-model="currentReport" ng-options="rpt.ReportDisp for rpt in availableReports" ng-change="updateDependent()"></select> 这会将select设置为第一个报告,但ng更改不会调用函数updateDepend
<select ng-model="currentReport"
ng-options="rpt.ReportDisp for rpt in availableReports"
ng-change="updateDependent()"></select>
这会将select设置为第一个报告,但ng更改不会调用函数updateDependent()
此外,我还尝试将对updateDependent()函数的调用添加到。然后,如下所示。但是当函数名为$scope.currentReport时,它是未定义的
webServices.getReports(user, menu1, menu2)
.then(function (result) {
$scope.availableReports = result.data.d;
$scope.currentReport = $scope.availableReports[0];
updateDependent();
}
有人知道发生了什么吗
我发现了问题
函数update updateDependent声明为$scope.updateDependent()。因此,我需要将http associated.then中的引用更改为$scope.updateDependent() 我不确定当从控制器更新时ng change何时被触发的规则,但是关于您的其他问题 我将修改updateDependent以接受如下参数:
<select ng-model="currentReport"
ng-options="rpt.ReportDisp for rpt in availableReports"
ng-change="updateDependent(currentReport)"></select>
我发现为了可读性,最好通过传入参数来更明确地说明函数正在做什么。此外,它还简化了updateDependent的测试过程。谢谢。这是个好建议。我以前尝试过它,想看看它是否能用$scope.currentReport修复最初的问题,但没有效果。不过我还是喜欢更明确的想法。谢谢。您是否确认$scope.currentReport已正确填充?Brocco,感谢您指示我再次查看.then代码。我发现了问题。问题在于“范围”。我应该引用$scope.updateDependent()而不是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);
}