通过ng-repeat将Angular服务转换为指令

时间:2015-01-26 09:13:50

标签: javascript angularjs

我正在尝试创建一个自定义指令来创建一个菜单,其中href值会根据我通过服务获得的family.id值而改变。

我正在尝试使用ng-repeat中每个元素的family.id值来通过服务查询新值并根据该值更改href

product.html

<ul class="list" custom-href categories="getfamilies"></ul>

href.js

 (function(){
    var app = angular.module('hrefDirective',['productsService']);

    app.directive('customHref',['productsService', function(productsService) {
        return {
            restrict: 'EA',
            transclude: false,
            scope: {
                categories: '='
            },
            template: '<li ng-repeat="family in categories"><p><a ng-bind="family.name" ng-href="{{newHref}}"></a></p></li>',           
            link : function($scope,$element, $attrs){
                productsService.finalFamilies(family.id).then(function(data){
                    if(data == 0){
                        $scope.newHref = '#/product/';
                    }else{
                        $scope.newHref = '#/product/{{family.id}}';
                    }
                });
            }
        };
    }]);

})();

products.js

(function(){
    var app = angular.module('productosController',['productsService']);

    app.controller('ProductsFamiliesController', function($scope, productosService){    

        productsService.getFamilies().then(function(data){
            $scope.getfamilies = data.data;
        });

    });

})();

services.js

(function(){
    var app = angular.module('productsService',[]);

    app.factory('productsService', ['$http','$location', function($http, $location){

        var webServiceUrl = 'my url'
        var products = [];

        products.getFamilies = function(){
            return $http.get(webServiceUrl+'getFamilies');
        };
        products.finalFamilies = function(idFamily){
            return $http.get(webServiceUrl+'getFinalFamiles?id'+ idFamily);
        };

        return products;

    }]);

})();

当然不行......有任何线索......?

plnkr.co/edit/3N19E0KyeWW7wvsLOlkk?p=info

0 个答案:

没有答案