- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Ionic Framework 构建一个 IOS 和 Android 应用程序,该应用程序具有 Instagram Feed 和 instagram api,显示由 hashtag 共享的所有照片(我将使用 hashtag chocolat 有一个例子)我想实现拉动刷新和无限滚动,所以基本上我会有一个按钮,一旦单击它就会打开带有 instagram 提要的 View 并拉出前 10 个结果,拉动刷新会尝试获得更新的结果,然后如果向下滚动提要,它会添加下一组结果(旧结果)。我一直在搜索,但我构建了一些无法按预期工作的东西。我是 ionic、angularjs 和 javascript 的新手开发人员,所以我决定在这里发布我的问题。
这是我的代码:
通过http获取instagram json的工厂或服务:
app.factory('PhotoService', function($http){
var BASE_URL = "https://api.instagram.com/v1/tags/chocolat/media/recent?access_token=+++";
//access_token hidden for privacy reasons
var items = [];
var nextUrl = 0;
return {
GetFeed: function(){
return $http.get(BASE_URL+'&count=10').then(function(response){
items = response.data.data;
nextUrl = response.data.pagination.next_url;
return items;
});
},
GetNewPhotos: function(){
return $http.get(BASE_URL+'&count=2').then(function(response){
items = response.data.data;
return items;
});
},
GetOldPhotos: function(){
return $http.get(nextUrl).then(function(response){
items = response.data.data;
return items;
});
}
}
});
Controller :
app.controller('CivrInstagramController', function($scope, $timeout, PhotoService) {
$scope.items = [];
$scope.newItems = [];
PhotoService.GetFeed().then(function(items){
$scope.items = items;
});
$scope.doRefresh = function() {
if($scope.newItems.length > 0){
$scope.items = $scope.newItems.concat($scope.items);
//Stop the ion-refresher from spinning
$scope.$broadcast('scroll.refreshComplete');
$scope.newItems = [];
} else {
PhotoService.GetNewPhotos().then(function(items){
$scope.items = items.concat($scope.items);
//Stop the ion-refresher from spinning
$scope.$broadcast('scroll.refreshComplete');
});
}
};
$scope.loadMore = function(){
PhotoService.GetOldPhotos().then(function(items) {
$scope.items = $scope.items.concat(items);
$scope.$broadcast('scroll.infiniteScrollComplete');
});
};
});
View :
<ion-view view-title="#Chocolat Photos!">
<ion-content>
<ion-refresher on-refresh="doRefresh()"></ion-refresher>
<div class="list card" ng-repeat="item in items track by item.id">
<div class="item item-avatar">
<img ng-src="{{item.user.profile_picture}}" ng- if="item.user.profile_picture.startsWith('https')">
<h2>{{item.user.full_name}}</h2>
<p><span am-time-ago="item.created_time" am-preprocess="unix"></span></p>
</div>
<div class="item item-body" >
<img ng-src="{{item.images.low_resolution.url}}" ng-if="item.images.low_resolution.url.startsWith('https')">
<p>
{{item.caption.text}}
</p>
</div>
</div>
<ion-infinite-scroll on-infinite="loadMore()" distance="5%"></ion-infinite- scroll>
</ion-content>
</ion-view>
PhotoService.GetFeed() 运行良好,因为它正确填充了前 10 张照片,但是,当我尝试无限滚动时出现错误:
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys.
正如您在 View 中看到的那样,我正在使用按 item.id 进行跟踪,因此我认为这意味着我使用 PhotoService.GetOldPhotos() 一次又一次地获得相同的结果。至于 PhotoService.GetNewPhotos() 它在有新数据要显示时工作,但是当没有新数据要获取时它会在转发器中抛出相同的重复错误(#chocolat 没有新帖子)
我做错了什么?谁能给我一些建议?在此先感谢您的时间!这是一个plnkr ++ 链接到我的项目,您可以在其中实际看到它正在尝试工作:\
++您可能需要在浏览器中启用跨源资源共享才能看到 feed 正常工作。
EDIT1:几乎完成!
所以经过几个小时和一些 console.log() 之后 :p 我能够通过标签获取 instagram 提要并使其与 ionic 拉动刷新和 ionic 无限滚动一起工作(我猜是 90%)但我的代码仍然存在问题,因为每次我滚动到最后一组项目时,我都无法停止无限滚动或 loadMore() 并且他们会尝试加载更多数据,因为最后一个 nextUrl 未定义但是instagram-api 接受 &next_max_tag_id=undefined 并再次获取最新结果,这会导致错误,因为 ng-repeat 中不能有重复项,我不想再次显示第一个结果。
我只需要在没有更多结果时停止 loadMore 和无限滚动,或者如果 &next_max_tag_id=undefined,或者如果两个数组中都有重复项(但我认为这不是推荐的性能明智的做法)。所以这是一个plnkr与我的项目,感谢您的时间!
我将标签更改为结果较低的内容,这样您就可以真正看到错误而不会厌倦滚动:p
最佳答案
我们单独解决了这个问题,但我想我也会在这里发布答案。主要变化是
min_tag_id
和 max_tag_id
格式getOldPhotos()
没有next_max_tag_id
时自动返回空数组的方法(从技术上讲,它返回一个已经解析为空数组的不同 promise 。)$scope.loadMore()
检查空响应并设置标志以终止 <ion-infinite-scroll>
在这里查看完整的工作副本:http://plnkr.co/edit/LBW0pp?p=preview
关于javascript - 带有 ionic 框架的 instagram feed 无限滚动不会在转发器错误中停止重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31166195/
我已经作为发布者向 feedly 提交了一个站点提要。但我没有找到我有多少来自任何地方的订阅者。有什么方法可以检查订阅者数量吗? 最佳答案 尝试输入如下 curl http://cloud.feedl
我正在设计一个 Feeds 系统,一个人可以发布新闻,其他人可以看到彼此的新闻,就像 Twitter 一样。 现在我将新闻保存在 HBase 中,并将它们缓存在 Redis 中。这种方法有 O(1)
我在 atom 文件中显示图像时遇到问题。它不包括谷歌阅读器、歌剧或火狐的提要中的图像。 作为起点,我在 [Atom 1.0 Syndication Format 概述] 中执行了 list 6 中的
我已经构建了一个简单的 Django 照片应用程序。用户可以上传照片、关注其他用户和喜欢照片。为了处理用户之间的关系(关注和取消关注),我使用了一个名为 django-relationships 的包
我需要在网站中显示 Telegram channel 帖子。但我不知道如何将 Telegram channel 导出为 xml。我需要文本和图像以及其他文件和媒体,例如 mp4 - pdf 或其他内容
我正在使用Google Feed JSAPI读取/解析提要。问题是,当提要更改时,之前的条目将变得无效(链接和图像不起作用),因此我无法加载提要的缓存版本。我认为加载提要时会有一个选项不使用缓存版本,
我正在使用 Facebook 页面插件集成 Facebook 页面提要 https://developers.facebook.com/docs/plugins/page-plugin 虽然它几乎适用
我正在用 PHP 构建一个 RSS 提要聚合器/阅读器。由于 RSS 本质上是用户生成的内容,因此我不想依赖提要内容的安全性。 我正在寻求有关清理供稿内容以便在用户设备上存储和显示的建议。目前,我正在
因为我运行一个博客聚合器网站,它每小时检查大量 RSS 提要列表以获取新帖子,所以如果可以使用 google feed api 或 Google AJAX Feed API 我会很高兴而不是让 cro
嘿,我有这两个 RSS 源 - http://www.petrolprices.com/feeds/averages.xml?search_type=town&search_value=kilmarn
我无法使用 Google Feed API 加载图像,我正在使用 mediaGroup 加载图像。 这是我为获取提要而编写的 javascript 代码 google.load("feeds", "
很抱歉,如果之前有人问过这个问题 - 有一个标题相似的问题,但它不完全是我正在寻找的内容。 我正在做的是从数据库中获取结果并将其打印在适当的标签内以创建 RSS Feed。 唯一的问题是文章正文包含
我尝试发布消息来供稿,但她只显示在个人资料中。 如何使此消息显示在新闻源和个人资料源上? 这是我的示例代码: SBJSON *jsonWriter = [[SBJSON new] autoreleas
我正在尝试使用 Google feeds 将 RSS feed 添加到我的网站。问题是它限制了条目的数量。我只看到 4 个条目,但当我 curl RSS 时,我看到 28 个条目。我怎样才能让它加载其
我试图在不使用任何插件的情况下在 jQuery 中构建 rss 提要,我在这里找到了解决方案:designshack.net它使用不再使用的 Google Feed API。我发现解决方案很简单,但它
我从 Node.js 服务器连接到 Google Feed API(使用 https://stackoverflow.com/a/22821516/3303704 )。但每次我使用它时,它似乎都会加载
我正在使用以下代码获取提要: NSDictionary *dirTemp; NSError *error; NSStringEncoding encoding; NSString *strUrl =
为什么我的日历没有将 JSON Feed 中的数据放入我的网页上? $(document).ready(function() { var date = new Date(); var
旧版 Facebook News Feed 和新版之间是否存在问题? 我的位置开放图集合的输出之间存在冲突。 在旧的新闻提要中,我在使用 Open Graph 进行跨平台 checkin 时得到了这个
我正在尝试在 Django (Python) 环境中使用 Amazon API 为产品设置最高价格。我已经通过计算 md5 函数解决了这个问题,该函数的值与 Amazon MWS Scratchpad
我是一名优秀的程序员,十分优秀!