Javascript ng变更不称为承诺中的we 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

当我更新promise中的ng模型参数时,select中的ng更改没有被调用,我遇到了一个问题。然后。我的选择是:

<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);
         }