我是离子和面临问题的新手:我必须加载并重新加载我的模板1分钟和1分钟,这是第一次没问题,但是当记录功能时从服务器再次调用它,它不清理模板,只是再次添加记录,所以如果我在服务器上只有一条记录,它会在第一分钟显示两条记录,在第二分钟显示三条记录,然后连续显示。
我试过:cache = false,window.reload,state.reload,state.go和许多其他尝试但没有给出我需要的结果,因为我只需要替换列表的内容而不是添加。 我的代码:
list = function () {
$http.post(G.URL + 'page.jsp')
.then(function (response) {
$scope.total = response.data.records.length;
$scope.items = response.data.records;
$scope.counter = 1;
}, function (error) { $scope.items = "Nothing"; });}
$interval(function () {
$scope.counter += 1;
if ($scope.counter > 59) {
$scope.counter = 1;
list();
//$ionicHistory.clearCache([$state.current.name]).then(function () { $state.reload(); }); } }, 1000);
提前致谢
答案 0 :(得分:1)
发生的事情之一是您没有看到更新,因为您没有消化新范围。 $ scope。$ apply()和$ timeout()运行一个摘要周期,以便范围可以刷新并显示新值。 $ http调用需要时间来返回客户端,如果您使用延迟值更新范围,则应运行摘要周期。我也清理了你的代码。
.controller('Ctrl', function($scope, G, $interval, $http, $timeout) {
// always initialize your scope variables
angular.extend($scope, {
total: 0,
items: []
});
var list = function () {
$http.post(G.URL + 'page.jsp')
.then(function (response) {
angular.extend($scope, {
total: response.data.records.length,
items: response.data.records
});
$timeout(); // this is used to reload scope with new delayed variables
}, function (err) {
console.error(JSON.stringify(err));
});
};
// call list every 1000 milliseconds * 60 = 1 minute
$interval(list, 1000 * 60);
// call list on page load so you don't wait a minute
list();
});