2016-09-28 6 views
0

私が見つけたすべての答えは要素を使用し、そこから$scopeにアクセスします。

コントローラー定義外のjavascriptで、コントローラーのスコープにアクセスすることをお勧めします。これも可能ですか?明確にするために


、私は、コントローラ内$scopeに監視されている変数を更新しようとしています。私は、私のアプリケーション内の多数のコントローラに対してこの機能を実行できるいくつかのパラメータを渡すことができるスタンドアロン機能を1つ持っていたいと思います。

私がこれを完全に間違った方法で行っている場合は、私を修正してください。最近角度をつけ始めたばかりです。


ような何か:

var myapp = angular.module("myapp", []); 

myapp.controller("myController1", function($scope, $http){ 
    $scope.specialVar = "some value"; 
}); 
myapp.controller("myController2", function($scope, $http){ 
    $scope.specialVar = "some other value"; 
}); 

var myFunction = function(controller, val){ 
    //set the value of specialVar for the passed controller to the passed value 
    myapp.AccessController(controller).$scope('specialVar', val); 
} 
+2

サービスを使用してデータを共有し、保存し、バインドします。あなたが何をしようとしているのか、何を解決しようとしているより高いレベルの問題を100%クリアしていないのですか? – charlietfl

+0

@charlietflは例を –

+0

に追加しました。アプリの中に?もしそうなら、あなたは間違いなくサービスを利用するでしょう – charlietfl

答えて

3

あなたはどのアプリケーションで共存指定したコントローラのインスタンスの数が、唯一つのサービスを持つことができることを覚えておいてください。サービスは効果的にシングルトンです。特定のコントローラーのインスタンスが1つしかないと仮定できる場合は、そのコントローラーをサービスとして扱っているように思えます。代わりにサービスを使用する必要があります。 の場合ではなく、正確に1つのインスタンスしか存在しないと仮定すると、angular.element(domElement).scope()にアクセスする必要があります。そうでなければ、あなたが話しているインスタンスを選択するのが難しくなるからです。

範囲を検索するために要素を使用したくない場合は、サービスと辞書/オブジェクトを使用して任意のキーから特定のスコープにマップすることができます。

+0

ありがとう!これは初心者のための良い情報です –

関連する問題