0

thisなしで、コントローラーでのみ使用できます$scopeか?

場合によってはもちろん、はい、知っています... しかし...

が必要な場合$emit$broadcastおよびスコープ内でのみ見つけることができるその他の角度機能はありますか? これで入手できますか、それとも他の方法で入手できますか?

4

2 に答える 2

0

この形式でコントローラーを作成すると、次のようになります。

angular.module('myModule').controller('myController',['$scope',function($scope){
     //controller code here
}]);

渡す関数は、基本的にコントローラーオブジェクトのコンストラクターです

したがって、次のようなコードを書くと:

angular.module('myModule').controller('myController',['$scope',function($scope){
         this.myObject = { key : value};
    }]); 

あなたは基本的にオブジェクトmyObjectのプロパティを作成していますmyController

コントローラーは基本的に angular.js で使用され、ビュー (ディレクティブによって処理される) とサービス (ビジネス ロジックを処理する) の間の通信を容易にします。

上記のように、Angular が提供する依存性注入を使用して$scopeオブジェクトをコントローラーに挿入できるようにするには、

新しいスコープ オブジェクトを使用してコントローラーをインスタンス化するng-controller="myController"と、コントローラー オブジェクトで使用するために作成されます。コントローラーのコンストラクター関数に引数として渡した$scopeオブジェクトには、新しく作成されたスコープがあります。

以下は、Angular ドキュメントからの抜粋です。

プロパティには、ビュー モデル (ビューによって表示されるモデル) が含まれます。すべての $scope プロパティは、Controller が登録されている DOM 内のポイントでテンプレートで使用できます。

したがって、基本的に $scope オブジェクトにアタッチするプロパティはすべて、DOM で操作できるようになります。

アタッチするプロパティthisは、DOM では使用できません。例えば ​​:

this is you angular configuration :

angular.module('myModule').controller('myController',['$scope',function($scope){
             $scope.name = 'kiran'
             this.message = 'hello world';
        }]); 
This is your html :

<p>{{name}}</p> 

出力は次のようになります。

試した場合:<p>{{message}}</p>代わりにエラーがスローされます。

スコープ オブジェクトのみが、現在のスコープで監視されているすべての変数のリストである $$watchers、$watch API、イベント処理用の $on API などのプロパティを含みます。

したがって、これを使用してこれらのプロパティを活用することはできません。これで問題が解決することを願っています。

于 2015-12-19T09:20:06.930 に答える
0

私が知る限り、 $emit など、 $scope を使用する必要があり、これを使用できない特別なケースがいくつかあります。

于 2015-12-19T08:37:52.503 に答える