2017-01-24 9 views
0

私はangularjsで新しいです、私は用語 'controller'と 'controller As'で混乱しています。 なぜ我々は一度に両方を使用するのですか?私はこの両方の指令について簡単に説明したいと思いますか?コントローラとコントローラの違いは何ですか?

+6

[Angularjs "Controller as"または "$ scope"]の複製があります(http://stackoverflow.com/questions/30641478/angularjs-controller-as-or-scope) – CozyAzure

+0

https: //toddmotto.com/digging-into-angulars-controller-as-syntax/ –

答えて

0

$scope変数に割り当てられた値にアクセスすることができますが、controllerAs = "vm"構文を使用すると、

あなたは、単に(コントローラ内で)行うことがあります。

var vm = this; 
vm.myModel = 'my model text' 

だからあなたは$スコープに値を割り当てる必要はありませんし、あなたのhtmlであなたは

<div>{{vm.myModel}}</div> 
+0

この詳細な回答を確認することもできます。http://stackoverflow.com/questions/11605917/this-vs-scope-in​​-angularjs-controllers? rq = 1 –

1

に両方の事をそれにアクセスすることができます、コントローラーコントローラーは、特定のビューで操作したいコントローラーと同じものを指します。それらは、その内部のプロパティと関数にアクセスする方法が異なります。 controllerAsの構文はオプションですが、私は強くお勧めします。

編集: controllerAsは、指定したコントローラの別名である、とあなたは$の範囲で動作しますcontrollerAsを指定しない場合は少しあなたは、コントローラ

内の値に近づく方法を変更をコントローラの内側に置くと、コントローラのスコープからプロパティと関数に直接アクセスすることになります。コントローラのスコープは多かれ少なかれ、悪い習慣です。例えば:コントローラで

$scope.employer = 'John'; 
$scope.totalEmployees = 15; 

鑑み:

<div>{{employer}} has {{totalEmployees}} employees</div> 

:ビューは範囲から値を直接アクセスする方法を参照。

しかし、あなたはcontrollerAsを指定した場合

コントローラ: 'EmployeeController'

controllerAs: 'EMP';

アプローチは少し異なっている、まだクリーナーや保守が容易:

コントローラで:

var emp = this; 
emp.employer = 'John'; 
emp.totalEmployees = 15; 

ビューで:

<div>{{emp.employer}} has {{emp.totalEmloyees} employees}}</div> 

注:今あなたが持っていますビューにエイリアスを指定して値にアクセスします。これは、アプリケーションが成長するにつれて複雑さも増すので、良い習慣です。コントローラーを使用すると、アプリケーションをより詳細に制御でき、維持およびデバッグが容易になります。

関連する問題