在对Flickr的API进行REST调用之前,我需要清除ul
当前项的列表,然后再用20个项填充它。目前这些是同时运行的,这导致列表保留0项,尽管抓住了20个新项目。
REST调用当前位于我的一个服务中。根据我的搜索,我发现了两种可能的解决方案:$timeout
和$viewContentLoaded
,或者可能将它们合并为一个解决方案。但是,在我的情况下,我无法弄清楚如何实现它以使其正常工作。
在其他任何事情之前执行的脚本:
JQuery代码:
$('#fav-tags-list').on('click', 'li', function() {
$('#images-list').children('li').remove();
$('#fav-tags-list li').removeClass('selected');
$(this).addClass('selected');
});
ng-click
(getImages)调用的函数:
flickrApp.service('shared', function() {
var imageGroup = [];
return {
getImages: function(tag) {
if (tag === false) {
var options = {
format: 'json',
tagmode: 'ANY'
}
}
else {
var options = {
format: 'json',
tags: tag,
tagmode: 'ANY'
}
}
$.getJSON('https://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?', options, function(data) {
$.each(data.items, function(i, image) {
imageGroup.push(data.items[i]);
});
});
return imageGroup;
}
};
});
ng-click
的标记(剥离属性):
<ul id="fav-tags-list">
<li ng-repeat="tag in tagsList" ng-bind="tag"
ng-click="shared.getImages(tag)"></li>
</ul>
编辑:根据我的要求,我如何使用该服务:
flickrApp.controller('flickrCtrl', ['$scope', '$firebase', 'shared', function($scope, $firebase, shared) {
$scope.shared = shared;
//Get a set of images on pageload
$scope.imageGroup = shared.getImages(false);
}]);
我甚至不确定这是我在这里寻找的东西,所以我很欣赏一些指导。
答案 0 :(得分:1)
如果您在调用函数时试图延迟,可以执行以下操作:
<html>
<button ng-click="do()"></button>
</html>
<script>
$scope.do = function() {
$timeout( function(){
//your code here
},10000, true );
}
<script>
或者更有效的方法来做同样的事情就是用timeout()
来包装它