使用控制器中的指令值

时间:2014-07-13 19:06:47

标签: angularjs angularjs-directive

我有一个带有ng-Category:

值的指令
$app.directive('ngCategory', function() {
    return {
        link: function(scope, element, attrs) { 
            var **categoryItem** = attrs.ngCategory ;       
        }            
    }   
});

我在控制器中使用返回值direcitve:

$app.controller( 'Pedido', ['$scope', '$http' , function( $scope , $http ) {
    $http({ method: 'GET', url: 'js/menu/menu.json' }).success( function( data ) {
        $scope.posts = data;

        $scope.listItens = [],
        $scope.minValue ;

        ...

        **categoryItem**
    }); 
}]);

但我不能,任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您无法在控制器中访问指令的局部变量。为了实现这一点,您需要将一个变量绑定到指令双向。可以使用指令中的ngModel实现此目的:

选项I:

$app.directive('ngCategory', function() {
    return {
        require: '?ngModel',
        link: function(scope, element, attrs,ngModel) { 
            ngModel.$setViewValue = attrs.ngCategory ;       
        }            
    }   
});

在Html中

<button ng-category ng-category ="counter">Click Me</button>

选项II

另一种方法是使用这样的指令:

$app.directive('ngCategory', function() {
    return {
        scope: { title:'=title' },
        link: function(scope, element, attrs) { 
            scope.title = xyz ;       
        }            
    }   
});

对于这个html:

<button ng-category title ="counter">Click Me</button>