我有HTML:
<load ng-repeat="item in widget" type="item.type"></load>
指令:
app.directive('load', function() {
return {
templateUrl: function (element, attrs) {
console.log(attrs.type);
return 'templates/camera.html';
},
replace: true,
restrict: 'E',
};
});
attrs.type返回字符串item.type,如何获取item.type的值?数组中的Ofc是类型。
答案 0 :(得分:0)
编辑:
你的templateUrl是一个函数吗? ???
正确的指令是这样的:
app.directive('load',function(){
return{
restrict:'E',
templateUrl:'yourTemplate.html'
link:function(scope,elem,att){
console.log(att.type)
scope.$apply(function(){
scope.types.item = att.item;// you can overrite like this , or use push() to scope.types
// this way you have access to your item in your templateUrl ;
// Remeber , there should be a $scope.types={} in your controller!!!!
// after this , in your templateUrl if you write {{types.item}}
// you can get your data
})
}
}
});
添加花括号{{item.type}}
<load ng-repeat="item in widget" type="{{item.type}}"></load>
答案 1 :(得分:0)
假设范围内有一个名为“type”的变量,则需要使用link
而不是template
。然后您可以使用以下内容:
link: function (scope, element, attrs) {
var variableName = attrs.type.split(".")[0];
var attribute = attrs.type.split(".")[1];
console.log(scope[variableName][attribute]);
};
应该这样做。祝你好运!
请参阅The Plunker: http://plnkr.co/edit/M2p27P5yGZC273AcTxOM?p=preview
其他笔记
cannot access type of undefined
之类的内容。答案 2 :(得分:0)
在你的链接功能中,尝试:
var type = scope.$eval(attrs.type);