我在创建指令时遇到问题,因为隔离范围没有从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 指令被实例化,因此数据未定义?或者(可能)我做错了什么?
答案 0 :(得分:2)