角度 - 数组从承诺更新,整数不更新
Angular - array updating from promise, integer not updating
目前我有一个工厂和一个控制器。 工厂使用来自终结点的项目和数据页数进行更新。 我的data
数组被识别正常,但我的pageCount
(int)更新实际上从未改变过。 我已经检查以确保它实际上没有返回 0。
.factory('myService', function($http) {
return {
data: [],
update: update,
pageCount: 0
};
function update() {
return $http.get('path/to/endpoint')
.then(function(res) {
angular.copy(res.data.itemsArray, this.data);
angular.copy(res.data.pageCount, this.pageCount);
// also tried this.pageCount = res.data.pageCount;
}.bind(this));
}
})
.controller('myCtrl', function(myService) {
myService.update();
$scope.data = myService.data;
$scope.pageCount = myService.pageCount;
});
<div>{{pageCount}}</div> // This does not update at all
<div ng-repeat="item in data">{{item}}</div> // This works fine
您将返回一个带有 update()
函数的promise
,以便您可以使用 then
来处理结果(这将给出更一致的结果):
.factory('myService', function($http) {
return {
update: update
};
function update() {
return $http.get('path/to/endpoint')
.then(function(res) {
var result = {
data: [],
update: update,
pageCount: 0
};
result.data = res.data.itemsArray;
result.pageCount = res.data.pageCount;
return result;
});
}
})
.controller('myCtrl', function(myService) {
$scope.data = [];
myService.update().then(function(result) {
$scope.data = result.data;
$scope.pageCount = result.pageCount;
});
});
从服务分配基元时,引用丢失。尝试从服务中的 getter 获取 pageCount。尝试覆盖服务值与作用域中的值完全不同。
它不会发生在数组上,因为它是一个引用并且您使用了 copy。
factory('myService', function($http) {
var pc = 0;
return {
data: [],
update: update,
pageCount: function() {
return pc;
}
};
function update() {
return $http.get('path/to/endpoint')
.then(function(res) {
angular.copy(res.data.itemsArray, this.data);
pc = res.data.pageCount;
}.bind(this));
}
})
.controller('myCtrl',
function(myService) {
myService.update();
$scope.data = myService.data;
$scope.pageCount = myService.pageCount;
});
<div>{{pageCount()}}</div> // This does not update at all
<div ng-repeat="item in data">{{item}}</div> // This works fine
相关文章:
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- Angular:更新一次性绑定的数据
- Javascript更新孙窗口中的表单元素
- 使用AngularJS中的筛选器更新给定的表
- 检测个位数整数时正在转换毫秒
- 限制javascript变量的最小/最大整数
- 角度 - 数组从承诺更新,整数不更新
- MySQL UPDATE只更新整数,不更新字符串
- 自动将表单字段从整数更新为十进制
- AngularJS的作用域整数没有在模板上更新