我打算写一个Angular Custom Directive
我的领导
该指令将在超过5个地方使用
他的建议是在不同的控制器中进行5次服务器请求,为什么我们不能在指令中将resource-url
作为输入传递给指令
的index.html
<users-list resource-url="getUsersList"></user-list>
脚本:
.directive(usersList, function ($http) {
return {
restrict :'E',
scope : {
resourceUrl : '@'
},
templateUrl : "someTemplate.html",
link : function (scope, ele, attr) {
$http.get(scope.resourceUrl).success(function (list) {
scope.users = list;
});
}
};
});
someTemplate.html
<div ng-repeat="user in users">{{user.name}}</div>
MY OBSERVATOIN
喜欢
<users-list list="usersList"></users-list>
因此该指令收到users
,如下所示
directive('usersList' , function () {
return {
scope : {
users : '=list'
},
templateUrl : someTemplate.html
}
});
在someTemplate.html
问题
在指令本身编写服务器请求是否是个好主意?
答案 0 :(得分:4)
这可能是一个好主意,但在我看来,这对于angularjs来说并不是一个好习惯。
您应该将您的请求包装在您的angularjs服务(工厂)中,然后将您的服务注入您的指令以进行http调用,您也可以通过指令为您的服务提供资源URL,并在您的元素上使用html属性。