2016-05-03 13 views
0

コントローラからカスタムディレクティブに2つのスコープ変数を渡そうとしていますが、それらの両方にアクセスする際に問題があります。モデルはディレクティブとコントローラで同じです。複数のスコープ変数をanglejsのカスタムディレクティブに渡す方法

HTML::

<myDirective data="var1" item="var2"></myDirective> 

コントローラー:

$scope.var1="abc"; 
$scope.var2="xyz"; 

指令:

app.directive('myDirective', function() { 

     return { 
      restrict: 'E', //E = element, A = attribute, C = class, M = comment   
      scope: { 
        var1: '=' 
        var2:'=' 

        }, 

      templateUrl: 'myTemplate.html', 

      link: function ($scope, element, attrs) { 


        } 
     } 
    }); 

TemplateUrl:myTemplate.html

<div>{{var1}}</div> // This works 
<div>{{var2}}</div> // This doesn't works 
012ここ コードです

どのように私は両方を使用できますか?

答えて

0

<popover data="var1" item="var2"></popover> 

JS

app.directive('popover', function() { 
    return { 
     restrict: 'E', //E = element, A = attribute, C = class, M = comment 
     scope: { 
      data: '=', 
      item: '=' 
     }, 
     templateUrl: 'myTemplate.html', 
     link: function (scope, element, attrs) { 
      console.log(scope.data, scope.item); 
     } 
    } 
}); 
+0

まだ動作していません –

+0

plsでエラーがありますか? – byteC0de

+0

ここに同じ問題があります。 2番目の変数はちょうど1つの方法で動作すると思われます。つまり、変数をディレクティブに送信しますが、変更した場合、変更はメインスコープに戻らず、印刷するとnullになります。 – JRivera294

0

はDDOで宣言された名前と一致するようにテンプレートを変更して、あなたのコードでこれらの変更を行います。

<myDirective var1="var1" var2="var2"></myDirective> 

属性名としてdataを使用しないでください。これは、正規化中に削除される予約済みプレフィックスです。属性の正規化の詳細については、AngularJS Developer Guide - Directive Normilizationを参照してください。

関連する問題