如何将参数从指令传递给指令

时间:2016-01-29 12:50:03

标签: html angularjs angular-directive

我有两个指令,我想将参数从一个指令传递给另一个指令。

示例:

指令1: -

app.directive('myDirective1', [function () {
    return {
        restrict    : 'E',
        templateUrl : 'templates/myDirective1.html',
        link        : function (scope, elem, attr) {
            scope.items = 'myPara';
        }
}]);

指令2: -

app.directive('myDirective2', [function () {
    return {
        restrict    : 'E',
        templateUrl : 'templates/myDirective2.html',
        scope       : {
            items : '='
        }
        link        : function (scope, elem, attr) {
            //here i want 'myPara'
        }
}]);

HTML: -

<my-directive1 items="items">
  <my-directive2></my-directive2>
</my-directive1>

在上面的例子中,当我在Directive1中更改scope.items的值时,它应该反映在directive2隔离范围(项目)上。现在我无法获得Directive2中的值。谁能帮我。感谢。

1 个答案:

答案 0 :(得分:2)

有一个你在两个指令中注入的服务..

app.service('myService',function(){ return {myPara : undefined}})

现在将此服务添加到您的两个指令并使用myPara,如myService.myPara = bla 因为服务是单例,所以你的指令中都有相同的实例。

指令1:

app.directive('myDirective1', ['myService',function (myService) {
return {
    restrict    : 'E',
    templateUrl : 'templates/myDirective1.html',
    link        : function (scope, elem, attr) {
        scope.items = myService.myPara;
    }
}]);

指令2

app.directive('myDirective2', ['myService',function (myService) {
return {
    restrict    : 'E',
    templateUrl : 'templates/myDirective2.html',
    scope       : {
        items : '='
    }
    link        : function (scope, elem, attr) {
        //here i want 'myPara'
        myService.myPara // Here is your myPara
    }
}]);