Javascript 在angularjs中更新模型和表
我对angularjs很陌生,虽然它已经存在了一段时间。我决定把我的C++ .NET代码转换成angurjs,这样我就可以动态地更新表了。 这是我的html页面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
<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;
}