28351


はじめまして。  
AngularJSを試してみようと思い、WEB上のサンプルを見ながら  
以下のようなコーディングを行い、動作を確認しました。（HTML側ソースは割愛します）

[code]

        var app = angular.module('myApp',[]);
        app.controller('myController',function($scope){
                                        $scope.msg = 'Hello';
                                    }
                        );
    
[/code]

controllerメソッドの第2引数「function($scope)」の部分を、「function($o)」に  
変更したところこのFunction自体が実行されなくなりました。

[code]

        var app = angular.module('myApp',[]);
        app.controller('myController',function($o){
                                        $o.msg = 'Hello';
                                    }
                        );
    
[/code]

私としては、このFuncionを呼び出す側（＝AngularJS）からすれば引数の名前が何であっても  
無関係であるという認識でいるのですが・・・。

$scopeを別名にすると動かなくなるのはなぜでしょうか？  
よろしくお願いいたします。


CC BY-SA 3.0
2016-08-18T05:28:28.207
28349
2016-08-18T06:39:07.897
2016-08-18T05:46:39.297
8000
18508
question
javascript angularjs
$scope を別名に変更すると動作しないのはなぜですか？


[AngularJSの依存性注入を利用するには？](http://www.buildinsider.net/web/angularjstips/0004)から引用しますが、

>
> AngularJSでは、引数の名前でもって依存するオブジェクト*2を表す、という決まりがあります。よって、この例であれば、引数として$scopeを指定することで、AngularJSがあらかじめ用意していた$scopeサービス（＝スコープオブジェクト）をコントローラーに引き渡しているわけです。

ということです。

下記のように配列を利用すれば、今回のように`$scope`を`$o`として使用できます。

[code]

    var app = angular.module("myApp", []);
    app.controller("myController", ["$scope", function($o) {
        $o.msg = "Hello";   
    }]);
    
[/code]


CC BY-SA 3.0
2016-08-18T06:39:07.897
28351
2016-08-18T06:39:07.897
9566
28349
answer