Angular Directive中的服务器请求?

时间:2015-05-13 06:28:40

标签: angularjs angularjs-directive

我打算写一个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

  • 中迭代用户

问题

在指令本身编写服务器请求是否是个好主意?

1 个答案:

答案 0 :(得分:4)

这可能是一个好主意,但在我看来,这对于angularjs来说并不是一个好习惯。

您应该将您的请求包装在您的angularjs服务(工厂)中,然后将您的服务注入您的指令以进行http调用,您也可以通过指令为您的服务提供资源URL,并在您的元素上使用html属性。