我一直在玩angularjs并调用rest服务来显示特定的数据集,但是我正在努力解决有关自定义指令和资源的一些概念。
目前我有一个自定义指令,用于加载系统中的注释列表。注释列表是一个自定义指令,它通过资源调用加载列表并显示列表。这在第A页中运行良好。
在第B页中,我通过网址显示单个用户。例如site.com/user/3 - 将其作为REST资源加载为页面模型。这也很好。
我想要实现的是将comments指令放在用户页面中,以便它只显示该用户的注释列表。我正在假设我可以以某种方式接受用户并以某种方式将其传递给指令作为评论的过滤器。
这种方法似乎不起作用。据我所知,该指令是在用户的承诺完成之前应用的,所以我以未经过滤的评论结束。
简而言之,如何在用户数据加载完成后获取加载过滤后的注释的指令?
请注意我正在谈论用户和评论,以便让人们知道我想要做什么。实际数据更具域特性,但数据关系相同。我也故意不发布代码,因为我试图理解我应该采取的正确方法,而不是特定的代码问题。
答案 0 :(得分:1)
我并不是真的赞成严格的规则,但在我看来:
看起来像是:
angular.service('CommentService',
function($http, $q){
this.getUserComments = function(userID){
var deferred = $q.defer();
$http.get('site.com/user/' + userID).
success(function(comments) {
deferred.resolve(comments)
}).
error(function(data, status) {
deferred.reject(status);
});
return deferred.promise;
};
}
); // End CommentService
angular.directive('commentList',
function(CommentService){
return {
restrict : 'EA',
template : '<ul><li ng-repeat="comment in comments">{{comment.text}}</li></ul>',
scope : true,
replace : true,
link : function(scope, elem, attrs){
// get User ID from somewhere
var userID = 3;
CommentService.getUserComments(userID).then(
function(comments){
scope.comments = comments;
}
);
}
}
}
);
希望有意义!