2012-11-01 21 views
6

の要素ディレクティブのスコープにアクセスするには:角度:どのようにこのような単純な角度のモジュールを考えると、コントローラ

angular.module('fixturesModule', []) 
.directive('clubfixtures', function() { 
    "use strict"; 
    return { 
     restrict: 'E', 
     replace: true, 
     transclude: true, 
     scope: { 
      club : "@club", 
      max : "@max" 
     }, 

    templateUrl: "ClubResultsTemplate.html", 

    controller: function ($scope, $http) { 

     $http.get("data.json").success(function (data) { 
      $scope.results = data; 
     }); 

     $scope.sortBy = "Date"; 

    } 
} 
}); 

どのように私は、コントローラの機能にクラブとmaxにアクセスするのですか?

おかげで、ジェフ

+1

でコントローラ機能のバグと考えることができると思わせるこれは、準備ができ、利用可能なのですか?指令のコントローラ機能では?または、指令の親のコントローラー機能では? –

+0

共有サービスを使用しますか? – maxisam

+0

上記の例に示す 'controller'に割り当てられた' function($ scope、$ http) 'にあります。具体的には 'club'の値は' $ http.get'のパスの一部を形成します – jeffeld

答えて

5

2は、単に命令のコントローラに注入範囲に定義された変数(maxclub)を挙げます。つまり、次のように書くことができます。

controller: function ($scope, $http) { 

     $scope.max; //do sth with $scope.max 
     $scope.club //so sth with $scope.club 

     $http.get("data.json").success(function (data) { 
      $scope.results = data; 
     }); 
} 

さらに詳しくお読みになる場合は、http://docs.angularjs.org/guide/directiveにある「ディレクティブ定義オブジェクト」を参考にして、ディレクティブのスコープについて説明してください。

+1

返事をとってくれてありがとう。しかし、 'console.log($ scope.club);'をコントローラ関数に追加すると、出力として定義されなくなります。 – jeffeld

+0

それは動作するはずです。プランナーhttp://plnkr.co/をセットアップする必要があります。 – maxisam

+1

詳細を表示するには、より多くのコードを参照する必要があります。具体的には、HTMLでどのようにディレクティブが使用されているか、使用されているスコープではどのデータが使用可能であるかです。 JsFiddle/plunkにライブコードを提供することは可能でしょうか? –

10

scope: { myAttr: '@' }のようにスコープの属性がの場合、の後にコントローラ機能が呼び出されました。

あなたが簡単なのsetTimeoutでこれを証明することができます - あなたがそれを必要とするとき、あなたが見つけたとして、

$ attrsに(コンソールを開くようにしてください)http://jsfiddle.net/Q4seC/を参照してください、準備ができています。あなたの代わりに「@」の「=」を使用する場合

は興味深いことに、値が私は、これは角度...

+0

これは正解です。ありがとう! –

+0

それも私が考えていたものです。私のためにそれをクリアしてくれてありがとう。 – GFoley83

+0

+1これは最も便利な答えですが、コントローラー機能の時点でこれらのスコーププロパティーがなぜ定義されていないのかはまだ確認されていません。バグとして確認されましたか?その他の情報は? –

関連する問題