gpt4 book ai didi

codeigniter - AngularJS 中的实时更新

转载 作者:行者123 更新时间:2023-12-03 17:33:03 24 4
gpt4 key购买 nike

为了学习 Angular 和 Codeigniter,我扩展了最初的新教程(来自 CI)。在当前阶段,它会自动显示新帖子并从页面中删除已删除的帖子,当然还会更新模型/数据库。 -- 我认为我不是这样做对 AngularJS 最有效的方法。对我的代码的反馈将对此有所帮助。 --

但是,我主要关心的是 如何在 Angular 中进行差异更新?
当我通过 jQuery 完成此操作时,我只是在我的 ajax url 上附加了一个时间戳。然后我会在 Controller 中捕获那个时间并将其分配给一个变量并进行比较以提取任何其他帖子。效果很好。它只会拉新故事(如果它们存在),如果它们不存在,那么不会有太多开销。

然而,目前在 Angular 中,它会在每个请求(每 5 秒)中提取整个 JSON 数据——对于大型应用程序,这将消耗过多的带宽。我如何区分这一点并只拉新帖子?

controllers.js( Angular Controller )

var timestamp = '';
function NewsListCtrl($scope, $http, $timeout) {

$scope.newsRequest = function(){
$http.get('/ci/index.php/news/get_news_ajax/' + timestamp).success(function(data) {
timestamp = $.now();
$scope.news = data;
});
};
$scope.newsRequest();
setInterval(function(){
$scope.$apply(function(){
$scope.newsRequest();
});
}, 5000);

}

上面的代码成功地将时间传递到 URL 的第 3 段(根据 Codeigniter 的第 3 段)。当页面最初加载时,所有帖子都会出现。然后在 newsRequest() 再次触发后,我得到一个空白页。我假设因为没有任何更新的帖子,它会将空数组分配给我的 $scope.news。 我将如何解决这个问题以便附加较新的帖子?

(就像我说的,我假设我没有充分利用 AngularJS ng-repeat。如果有人有更好的解决方案,请赐教!)

最佳答案

您需要将加载的数据连接到 $scope.news。如果它是一个数组 - 容易

 $scope.news.concat(data);

否则,您可能需要遍历加载的数据并添加新位。

关于codeigniter - AngularJS 中的实时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15440908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com