Javascript AngularJS directve链接作用域在ng模板上重复
在本指令中:Javascript AngularJS directve链接作用域在ng模板上重复,javascript,angularjs,Javascript,Angularjs,在本指令中: (function(){ var app = angular.module('hrefDirective',['productosService']); app.directive('customHref', ['productosService', function(productosService) { return { restrict: 'EA', template: '<li ng-r
(function(){
var app = angular.module('hrefDirective',['productosService']);
app.directive('customHref', ['productosService', function(productosService) {
return {
restrict: 'EA',
template: '<li ng-repeat="familia in getfamilias"><p><a ng-bind="familia.name" ng-href="{{familia.href}}"></a></p></li>',
link : function(scope, element, attrs){
productosService.getFamilias().then(function(data){
scope.getfamilias = data.data;
for(var t in scope.getfamilias){
productosService.getFinalFamilias(scope.getfamilias[t].id).then(function(result){
scope.getfamilias[t].href = result.data.rows == 0 ? '#/producto' : '#/productos/{{familia.name}}';
});
}
});
}
};
}]);
})();
在链接中,我通过一个服务获取原始getfamilias对象,并在一个新服务中使用id属性来获取一个新的属性,并将其推送到原始getfamilias对象以在模板中用作href,但它不起作用
关于如何获取模板值的任何线索?您的代码中有一些错误,因此我建议您使用以下方法:
app.directive('customHref', ['productosService', function(productosService) {
return {
restrict: 'EA',
template: '<li ng-repeat="familia in getfamilias"><p><a ng-bind="familia.name" ng-href="{{familia.href}}"></a></p></li>',
link : function(scope, element, attrs){
productosService.getFamilias().then(function(data){
// you have to make sure your data.data has a collection, I don't know your complete code,
// so I'm just leaving this part as it is.
scope.getfamilias = data.data;
//Use angular.forEach instead of for(x in y)
angular.forEach(scope.getfamilias, function(familia){
productosService.getFinalFamilias(familia.id).then(function(result){
// render the name here instead of using '#/productos/{{familia.name}}'
familia.href = result.data.rows === 0 ? '#/producto' : '#/productos/' + familia.name ;
});
});
});
}
};
}]);
app.directive('customHref',['productosService',function(productosService){
返回{
限制:“EA”,
模板:“”,
链接:函数(范围、元素、属性){
productosService.getFamilias().then(函数(数据){
//你必须确保你的数据。数据有一个集合,我不知道你的完整代码,
//所以我就不谈这部分了。
scope.getfamilias=data.data;
//使用angular.forEach而不是for(x in y)
angular.forEach(scope.getfamilias,函数(familia){
productosService.getFinalFamilias(familia.id).then(函数(结果){
//在此处呈现名称,而不是使用“#/productos/{{familia.name}”
familia.href=result.data.rows==0?“#/producto”:“#/productos/”+familia.name;
});
});
});
}
};
}]);
我给你做了一个扑通,请看一下:
在服务呼叫中,然后回拨。为什么不检查一下什么是
t
?嗨,请看一下我的答案。我已经做了一个plunkr,并试图用固定的值来模拟您服务的响应。很好的回答,也许你们可以提及在OPs案例中实际发生的事情,以便OPs理解+为了额外的努力。
app.directive('customHref', ['productosService', function(productosService) {
return {
restrict: 'EA',
template: '<li ng-repeat="familia in getfamilias"><p><a ng-bind="familia.name" ng-href="{{familia.href}}"></a></p></li>',
link : function(scope, element, attrs){
productosService.getFamilias().then(function(data){
// you have to make sure your data.data has a collection, I don't know your complete code,
// so I'm just leaving this part as it is.
scope.getfamilias = data.data;
//Use angular.forEach instead of for(x in y)
angular.forEach(scope.getfamilias, function(familia){
productosService.getFinalFamilias(familia.id).then(function(result){
// render the name here instead of using '#/productos/{{familia.name}}'
familia.href = result.data.rows === 0 ? '#/producto' : '#/productos/' + familia.name ;
});
});
});
}
};
}]);