2016-03-22 6 views
0

私は、このelasticuiベースの指示文からrootScope変数にアクセスするために何百万もの方法を試みました。 $ rootScopeが本当に親コントローラに渡されていることに注意してください。指示文でrootScopeにアクセス

var elasticui; 
(function (elasticui) { 
var directives; 
(function (directives, rootScope) { 
    var IndexDirective = (function() { 
     function IndexDirective() { 
      var directive = {}; 
      directive.restrict = 'EAC'; 
      directive.controller = elasticui.controllers.IndexController; 
      directive.link = function (scope, element, attrs, indexCtrl, rootScope) { 
      console.log("Updated Index: " + $rootScope.esIndex); 
      indexCtrl.indexVM.index = scope.$eval(attrs.euiIndex); 
      }; 
      return directive; 
     } 
     return IndexDirective; 
    })(); 
    directives.IndexDirective = IndexDirective; 
    directives.directives.directive('euiIndex', IndexDirective); 
})(directives = elasticui.directives || (elasticui.directives = {})); 
})(elasticui || (elasticui = {})); 

他の場所で私は私がポイントしたいが、私は「$ rootScopeが定義されていない」そうだインデックスに$ rootScope.esIndexを設定しています。私はディレクティブのスコーププロパティをfalseに設定しようとしましたが、$ rootScope.esIndexのウォッチャーをリンク関数の戻り値の一部として設定しようとしましたが、何をしてもわかりません。

私の問題の一部は、この構造は、より新しい角度の人を消化するための指示の観点からやや暗黙のものだと思います。これははるかに大きなディレクティブ定義のブロックなので、把握するのは難しいです。

どのように私はここで簡単に$ rootScopeをつかむことができます任意のアイデア?

ありがとうございました!

+0

もっと多くのコードをここではっきりと提供するべきですが、最初の一見で '$ rootScope'ではなく' rootScope'を関数に渡しています。それが問題の一部になる可能性があります。 –

答えて

0

コードをもっと見ると役立ちます。具体的には、 "$ rootScopeが実際に渡された"と言うとき。 rootScopeパラメータが渡されていません、それは関数を実行し、あなたの自己を表示され一目で

(directives = elasticui.directives || (elasticui.directives = {}, rootScope)); 

よう

(directives = elasticui.directives || (elasticui.directives = {})); 

何かに:しかし、この限られた情報で、なぜあなたは、この行を変更しようとしないでくださいそれは期待しています。がんばろう!

編集:また

console.log("Updated Index: " + $rootScope.esIndex); 

はおそらく、ドル記号を持つべきではありません。

編集:コメントはもっと情報があります!

+0

これは、次のコードの修正で、ライン179 https://github.com/YousefED/ElasticUI/blob/master/dist/elasticui.js を参照してください、私のようなもので終わるしようとしている: indexCtrl.indexVM.index = $ rootScope.esIndex; ページのコントローラに$ rootScope.esIndexをログアウトすると、適切な値が得られ、実際にrootScopeが上記の親コントローラに渡されているように見えますが、ディレクティブ自体からアクセスできないようです。私のバージョンでは、ウォッチャーを殺すだけで簡単にできましたが、上記のページは私が作業しているものです。 – omenclature

+0

294行で実行中の$ rootScopeサービスを宣言する必要がある場合は、276行目のように関数の引数として渡すことができます。$ inject = ['$ rootScope'] ; indexDirective($ rootScope)関数を呼び出してください。リンク関数の引数からrootScopeを取って、それを必要としません。 –

+0

P.s. "バニラ"アンギュラはこのようなものではない、私はelasticuiに精通していないが、私は文法では少し秘密だと同意する。 –

関連する問題