有没有办法在指令模板中插入角度变量作为字符串?例如{{row.name}},因此angular不会仅在指令中在页面中解释它。像这样的东西:
指令模板:
<div>
<div ng-transclude ng-repeat="row in data">
</div>
</div>
用例: 我从控制器向数据数组发送指令。 person.name =&#34; John&#34;,person.name =&#34; Mike&#34;。 对于这种情况,我的页面看起来像:
....
<div my-directive>
Name: {{row.name}}
</div>
从另一个控制器发送数据: car.weight = 13,car.weight = 44 对于这种情况,我的页面看起来像:
....
<div my-directive>
Weight: {{row.weight}}
</div>
结果将是: 名称: 名称: 要么 重量: 重量:
这是因为{{row}}未定义
这是可能的还是我理解了所有错误,还有另一种方法吗?
答案 0 :(得分:2)
您需要将row
属性添加到转换范围。这是因为ng-transclude
指令的范围不是从my-directive
范围继承,而是从外部(页面)范围继承。
一种方法是创建特殊的转换指令:
module.directive('myDirectiveTransclude', function() {
return {
link: function($scope, elem, attrs, ctrl, $transclude) {
$transclude(function(dom, transclusionScope) {
transclusionScope.row = $scope.row;
return elem.append(dom);
});
}
};
});
然后用它替换ng-transclude
:
<div>
<div my-directive-transclude ng-repeat="row in data">
</div>
</div>