当我在html中调用$ scope.remove时,它会调用rerender函数,然后自动更新html中的数据。
当我调用$ scope.post时,它会调用rerender函数并记录新数据。但是,它不会自动重新呈现html。我必须刷新页面才能看到最新的数据。
我已经考虑过使用$ apply但是我很困惑它是如何更新删除但不是发布。
控制器:
var updateData = function (resp){
$scope.data = resp.data;
console.log($scope.data);
}
$scope.getEntries = function (){
return $http({
method: 'GET',
url: '/allEntries'
}).then(updateData)
};
$scope.post = function (){
return $http({
method: 'POST',
url: '/newEntry',
data: $scope.entry
}).then(function (resp){
$scope.getEntries();
})
};
$scope.remove = function (opp){
return $http({
method: 'POST',
url: '/deleteEntry',
data: opp
}).then(function (){
$scope.getEntries();
})
}
我认为这可能与在不同的html文件中调用函数有关,但由于它们都具有相同的控制器,我认为情况并非如此。
<html>
<body ng-app = "app">
<div ng-controller = "controller">
<form ng-submit = "post()">
<input type="submit" value="Submit">
</form>
</div>
</body>
</html>`
<html>
<body ng-app = "app">
<div ng-controller = "controller">
<ul>
<li ng-repeat = "job in data" ><input type = "button" ng-click = "remove(opp)" value="Delete"></li>
</ul>
</div>
</body>
</html>`
答案 0 :(得分:0)
实际上,你有两个不同的部分,每个部分都有自己的控制器,因此每个部分都有自己的范围:
您从未显示任何内容的部分发布,因此会刷新该部分范围内的列表,但仍然无法显示任何内容。
因此,简而言之,两个部分都没有相同的控制器。它们具有不同的控制器实例,并且这些实例恰好具有相同的类型。但他们仍然彼此完全独立。
实际上,重读你的问题,实际上比这更糟糕。您似乎打开了两个浏览器选项卡或框架。您正在从其中一个选项卡发布,并希望另一个选项卡将自动刷新。这不会发生:两个标签是完全独立的应用程序。