在指令undetable中隔离范围

时间:2015-06-27 15:30:58

标签: angularjs

我在创建指令时遇到问题,因为隔离范围没有从html传递,并且在指令控制器中给出了未定义。

lmLoop定义

angular.module('loops.directives')

.directive('lmLoop', function() {
   return {
     restrict: 'E',
     templateUrl: 'modules/loops/partials/loop.tpl.html',
     scope: {
       loop: "=",
     },
     controller: ['$scope', '$log',
       function($scope, $log) {
         console.log($scope.loop);   // undefined
       }
     ]
  }
});

模块/循环/分音/ loop.tpl.html

<div class="loop-container">
  Testing: {{ loop.message }}  <!-- empty -->
</div>

我是如何尝试使用我的指示

<div class="loops-container">
  <lm-loop ng-repeat="loop in loops" loop="loop"/>
</div>

这会正确呈现视图,这意味着它会重复适当的次数,对于数组中的每个项目重复一次,但它不会传递变量“loop”并且div保持为空。但当我执行以下操作时,正确呈现并且显示消息

<ul>
  <li ng-repeat="loop in loops">
    {{ loop.message }}  <!-- WORKS!!! -->
  </li>
</ul>

指令 ul 都在另一个指令中。该指令通过如下服务获取循环

controller: function($scope) {

  loopService.getLoops($scope.group._id, function(loops) {
    $scope.loops = loops;
  }, function(err) {
    $log.error(err);
  });

  ... Other code ...

}

我不知道对服务的异步调用是否获取了数据 lmLoop 指令被实例化,因此数据未定义?或者(可能)我做错了什么?

1 个答案:

答案 0 :(得分:2)

尝试在指令

中添加TextChangedEventArgs

这里有很好的解释ng-repeat in combination with custom directive