2
我需要清除ul
当前项目列表,然后再调用Flickr的API,然后再填充20个项目。目前这些正在同时运行,尽管抓住了20个新物品,但这个清单仍然保留了0个物品。如何让ng-click函数等待jQuery脚本在执行前完成?
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);
}]);
我甚至不能确定这就是我正在寻找在这里,所以我会很感激一些指导。
不要在角码内使用jquery ..使用'$ http.get'或'$ resource'..that将创建一个摘要循环的瓶颈运行 – 2015-02-07 20:28:49
完全忘记了$ http.get .. will更改和更新问题。 – Chrillewoodz 2015-02-07 20:31:49
这是错误的代码里面的服务..可以请你添加你的控制器代码..我想看看你是如何使用服务..看起来像服务没有返回任何承诺.. – 2015-02-07 20:36:29