【问题标题】:isolate scope in directive undefined在指令未定义中隔离范围
【发布时间】:2015-06-27 15:30:57
【问题描述】:

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

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
       }
     ]
  }
});

模块/循环/partials/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>

这会正确呈现视图,这意味着它会重复正确的次数,对数组中的每个项目执行一次,但它不会传递变量“循环”并且 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 指令被实例化并因此使数据未定义?或者也许(可能)我做错了什么?

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    尝试在指令中添加priority: 1001

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

    【讨论】:

    • 太棒了!谢谢一堆!
    • 我现在有一个问题,$scope 无法正常工作,您是否也有一些解决该问题的提示?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多