我尝试显示数据时遇到问题。
我需要点击浏览器的按钮刷新才能看到新值。
“硬”刷新后,视图会更新。
为什么我需要完全刷新页面?
这是我的代码
JS:
我的服务GenericService
(我创建了这项服务,因为我在几个控制器中使用它)
myApp.factory('GenericService', function ($http, $q, MyFunctions) {
var data = {};
function getDataIfNeeded(action) {
action = action || 'default';
if (data[action] !== undefined) {
return $q.when(data[action]);
}
return $http({
url: "php/functions.php",
method: "GET",
params: {
action: action,
dummy: MyFunctions.randomString(7)
}
}).then(function(response) {
data[action] = response.data;
return data[action];
});
}
return {
getData: getDataIfNeeded
};
});
服务电话
myApp.controller('listCtrl', ['$scope', '$http', '$rootScope', '$location', 'GenericService',
function ($scope, $http, $rootScope, $location, GenericService) {
GenericService.getData("get_projects").then(function (data) {
$scope.projects = data;
});
GenericService.getData("get_projects_draft").then(function (data) {
$scope.projects_in_draft = data;
});
}]);
HTML:
<div ng-controller="listCtrl">
<div ng-repeat="project in projects">
<span>{{ project.nom }}</span>
</div>
<div ng-repeat="project_draft in projects_in_draft">
<span>{{ project_draft.nom }}</span>
</div>
</div>
答案 0 :(得分:3)
您的服务GenericService
仅从服务器获取数据&#34;如果需要&#34;,这意味着本地data
变量是否为空。当然,如果不重新加载服务,并在表单提交后,数据将不同步!所以你有两个选择:
如果服务器正在创建其他数据,即拥有AngularJS在表单提交后没有的数据,则需要执行另一个请求以获取新数据。只需清空本地data
变量。
其他,如果服务器只是将数据保存在数据库中,并且没有执行任何其他操作而对页面上显示的内容产生影响,那么你就不要# 39; t必须做其他请求,因为你已经知道你发送到服务器的内容了!只需更新本地data
变量。