在AngularJS中,如何在模型更新后更新视图
In AngularJS, How to update view after model is updated?
在下面的代码段中,两个变量$scope.recordList
&$scope.recordList2
有完全相同的值。$scope.recordList2
已设置为静态值,$scope.recordList
在收到服务器响应后更新。语句$scope.recordList
&$scope.recordList2
呈现相同的值,$scope.recordList
在收到响应后呈现。
最后有两个智能表(https://github.com/lorenzofox3/Smart-Table)。$scope.recordList2
基表按预期工作。基于$scope.recordList
的表不能正常工作
在AngularJS中,如何在模型更新后更新视图?
<div ng-app="smartTableApp" ng-controller="smartTableController">
<script>
angular.module('smartTableApp', [ 'AngularJSRemoting','smartTableApp.controllers', 'smartTable.table']);
angular.module('smartTableApp.controllers', []).controller('smartTableController', function($scope, jsr) {
jsr.Call('appController.query', '{!soql}').then(function(response) {
$scope.recordList = response;
//$scope.$apply() ; uncommenting this gives "$digest already in progress" error
},function(err){
console.log(err);
});
$scope.recordList2=[{"attributes":{"type":"Contact","url":"/services/data/v30.0/sobjects/Contact/0039000000wvt6yAAA"},"Name":"Stella Pavlova","Phone":"(212) 842-5500","CreatedDate":"2014-05-15T06:17:48.000+0000","Id":"0039000000wvt6yAAA"},{"attributes":{"type":"Contact","url":"/services/data/v30.0/sobjects/Contact/0039000000wvt6zAAA"},"Name":"Lauren Boyle","Phone":"(212) 842-5500","CreatedDate":"2014-05-15T06:17:48.000+0000","Id":"0039000000wvt6zAAA"},{"attributes":{"type":"Contact","url":"/services/data/v30.0/sobjects/Contact/0039000000wvt70AAA"},"Name":"Babara Levy","Phone":"(503) 421-7800","CreatedDate":"2014-05-15T06:17:48.000+0000","Id":"0039000000wvt70AAA"},{"attributes":{"type":"Contact","url":"/services/data/v30.0/sobjects/Contact/0039000000wvt71AAA"},"Name":"Josh Davis","Phone":"(503) 421-7800","CreatedDate":"2014-05-15T06:17:48.000+0000","Id":"0039000000wvt71AAA"},{"attributes":{"type":"Contact","url":"/services/data/v30.0/sobjects/Contact/0039000000wvt72AAA"},"Name":"Jane Grey","Phone":"(520) 773-9050","CreatedDate":"2014-05-15T06:17:48.000+0000","Id":"0039000000wvt72AAA"}] ;
});
</script>
<br/>----------recordList----------<br/><!-- Shows expected values -->
{{recordList}}
<br/>----------recordList2----------<br/><!-- Shows expected values -->
{{recordList2}}
<br/><br/>
<smart-table rows="recordList" ></smart-table><br/><br/><!-- table is NOT rendered -->
<smart-table rows="recordList2" ></smart-table><br/><br/><!-- table is rendered -->
</div>
问题不在于Angular没有更新视图。实际上,您可以在代码示例中指出它正在更新它:
<br/>----------recordList----------<br/><!-- Shows expected values -->
{{recordList}}
我没有Smart-Table的经验,但我确实在GitHub上发现了这个问题,它描述了一个类似的问题。该模块的作者确实回复并建议初始化表仅列配置,以避免问题(他描述为一个bug)。
因此,如果您在查询之前知道数据的结构,那么您应该使用列数据初始化您的表。
相关文章:
- $routeParams在传递到新视图时未定义&控制器
- ajax.beginform() 不更新部分视图 MVC
- 角度指令没有更新模型视图
- 如何在渲染新视图之前关闭所有事件
- 从Backbone中的另一个视图调用新视图
- Angular数组更改时更新HTML视图
- 更新淘汰视图模型属性时激发更改事件
- Angular2 在创建 ngSwitch 新视图后调用自定义函数
- Knockout.js-更新父视图模型中的数组,在第二个视图模型中使用值
- 比较两个数组,并通过使用 javascript 保留现有对象来更新新值
- 单击按钮时更新角度视图模型
- 当现有 Google 标记移动到另一个位置时,如何更新新的纬度和经度
- 如何在 DIV 中更新新图像
- 使用 AJAX 更新的模型更新 AngularJS 视图
- 主干新视图反映旧模型数据
- 如何在单击按钮时动态更新部分视图
- 更新主干视图
- 挖空 - 添加了可观察的不更新新对象
- 使用 ajax 从 php 文件中获取随机数不会更新新结果
- 创建新视图时调用呈现函数