Javascript 在angularjs中更新模型和表

Javascript 在angularjs中更新模型和表,javascript,angularjs,Javascript,Angularjs,我对angularjs很陌生,虽然它已经存在了一段时间。我决定把我的C++ .NET代码转换成angurjs,这样我就可以动态地更新表了。 这是我的html页面 <div ng-controller="missionsController" ng-init="loadList()" class="inner"> <section> <div> <header class="major"> <h1

我对angularjs很陌生,虽然它已经存在了一段时间。我决定把我的C++ .NET代码转换成angurjs,这样我就可以动态地更新表了。 这是我的html页面

<div ng-controller="missionsController" ng-init="loadList()" class="inner">
<section>
    <div>
        <header class="major">
            <h1>
                <span>{{PageTitle}}</span>
            </h1>
        </header>
        <table>
            <tr>
                <td>S/N</td>
                <td>Region</td>
                <td>District Count</td>
                <td>Zone Count</td>
                <td>Branch Count</td>
                <td>Sub Branch Count</td>
                <td>Adult Attendance</td>
                <td>Children Attendance</td>
                <td>Total Attendance</td>
            </tr>
            <tr ng-repeat="x in adminLevelList">
                <td><span ng-if="$index != adminLevelList.length - 1">{{$index + 1}}.</span></td>
                <td>{{x.RegionName}}</td>
                <td>{{x.nDistricts}}</td>
                <td>{{x.nZones}}</td>
                <td>{{x.nBranches}}</td>
                <td>{{x.nSubbranches}}</td>
                <td>{{x.Attendance.AdultCount}}</td>
                <td>{{x.Attendance.AdultCount}}</td>
                <td>{{x.Attendance.AdultCount}}</td>
            </tr>
        </table>
    </div>
</section>
该页面只是从一个名为API的HTTP服务加载数据,该服务对另一台服务器进行HTTP get调用,以加载数据。根据AL的值,返回的数据不同。 但是,在第一次加载页面后,当AL的值更改时,表不会使用新数据更新。我正在使用routes更改AL的值。HTTP调用返回新数据,但新数据不会加载到adminLevelList中,表也不会更新。 我在网上尝试了各种各样的建议——包括apply、applySync等等——似乎对我不起作用。我想使用同一页面根据提供的值显示不同的数据集,这是错误的吗? 我怎样才能克服这个问题


感谢期待

问题在您的
apiService.js
中。您正在使用全局/共享承诺(
延迟
)对象解析和拒绝来自所有http服务调用的数据

每个服务都应该有自己的promise对象,以便在响应可用时解析数据

this.getAllAdminLevelReport = function (AL) {
      $log.log('API CALL (getAllAdminLevelReport(' + AL + ')...');

      /* use a local promise so that you get a new instance 
         for every method invocation*/

      var defered = $q.defer();

      // removing rest of the code for the sake of brevity. No change here

      return defered.promise;
} 

您确定在通过路由更改AL值时对数据进行了http调用吗?根据您的代码,我看到数据仅在
loadList()
中加载和更新,您碰巧在ng init中调用了它。100%确定。我在api服务中添加了日志,以确保正在调用该服务。Chrome控制台上网络视图中的数据也显示返回了正确的数据。在dev tools中,在then()的成功回调中放置一个调试点,然后查看控件是否到达您使用服务器结果更新adminLevelList的行。通常是
result.data
包含实际数据,除非您在GetAllAdminLevel Report()中对其进行了修改。更不用说result.data了,如果它在ng init中工作过一次,那么这次应该可以正常工作。我在
$scope.adminLevelList=result之后的then()第一个参数中看到了一个额外的大括号,希望是复制粘贴错误。是。必须是。我试图从代码中删除不必要的东西。它第一次就得到了。下一次更新模型不起作用。可能是因为这是一个http电话吗?谢谢阿肯托斯。使用本地承诺对象非常有效。
this.getAllAdminLevelReport = function (AL) {
      $log.log('API CALL (getAllAdminLevelReport(' + AL + ')...');

      /* use a local promise so that you get a new instance 
         for every method invocation*/

      var defered = $q.defer();

      // removing rest of the code for the sake of brevity. No change here

      return defered.promise;
}