【发布时间】: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