gpt4 book ai didi

jquery - AngularJS 中的连接对象

转载 作者:行者123 更新时间:2023-12-01 02:00:47 24 4
gpt4 key购买 nike

我正在使用 AngularJS 开发单页应用程序。目前我已经进行了设置,因此每 5 秒就会调用数据库来更新客户端模型。我想用时间戳来错开事情。因此,它不会从数据库中提取所有内容,而只是提取比上次调用更新的已添加的所有内容。 (节省带宽等)。但这对我来说没有意义

Angular Controller

var timestamp = '';
function NewsListCtrl($scope, $http, $timeout) {
$scope.news = [];
$scope.newsRequest = function() {

$http.get('/ci/index.php/news/get_news_ajax/' + timestamp).success(function(data) {
timestamp = $.now();

$scope.news = $scope.news.concat(data);
});
};

$scope.newsRequest();
setInterval(function(){
$scope.$apply(function(){
$scope.newsRequest();
});
}, 5000);
}

上面的代码不会在页面上打印任何内容。第一个请求显示对象中的数据。但后续请求(带有时间戳)显示空对象。所以至少第一个请求应该打印出来。

初始请求中的数据示例

{"new":[{"id":"181","title":"not gonna work","slug":"not-gonna-work","time":"1363374669","text":"asdfs","deletetime":null}]}

当我删除

$scope.news = [];

然后我收到返回错误,表示它未定义。

有人能够阐明实现这一目标的正确方法吗?

编辑:

根据答案,我已将代码更新为:

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

现在数据仍然显示在页面上。但它实际上不再填充模型中的新数据。不知道这是否是逻辑上的问题。我正在使用

timestamp = $.now(); 

设置当前时间。它显示一个 13 位整数。但在我的数据库中,它使用 php 的时间函数显示 10 位整数。

time()

这些冲突吗?

最佳答案

您应该连接数组本身(现在您正在将初始数组与哈希对象连接起来):

$scope.news = $scope.news.concat(data['new']);
/* data['new'] because your request returns `{new: []}`, consider changing it to `{news:[]}` */

关于jquery - AngularJS 中的连接对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15485926/

24 4 0
文章推荐: javascript - 从另一个类调用导出函数
文章推荐: cordova - ionic 本地存储不持久
文章推荐: Magento:以编程方式创建 Magento 订单
文章推荐: javascript - $ ('
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com