2016-01-29 91 views
0

我有兩個指令,我想從一個指令傳遞參數到另一個指令。如何將參數從指令傳遞到指令

樣品:

指令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的值時,它應該反映在指令2的隔離範圍(項目)上。現在我無法獲得Directive2中的值。誰能幫我。謝謝。

+0

您還可以使用事件廣播如果單向通信。其他服務。 –

+1

@Ali Gajani,我使用了'broadcast',它的工作正常。謝謝! – JiLaBaJi

回答

2

有你在這兩個指令注入服務..

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

現在添加此服務讓您既指令和使用像myService.myPara = bla 的myPara因爲服務是單身,你將擁有相同的實例兩個指令。

指令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 
    } 
}]); 
+0

這個答案工作正常。謝謝! – JiLaBaJi

+0

不客氣m8 –

相關問題