2016-04-15 3 views
0

私は$scope VARを使用して、または注入せずに角度の宣言を使用していますが、this.宣言

var app = angular.module('myApp', []); 
 
    app.controller('myCtrl', myCtrlFunction); 
 
        
 
    function myCtrlFunction() { 
 
     this.myUrl = "This is myUrl content"; 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myCtrl as vm"> 
 
    <p>Here I put my var myUrl:</p> 
 
    <h3>{{vm.myUrl}}</h3> 
 
</div>

とそれはOKに動作しますが、私は「$の場所」にアクセスする方法を見つけ出すことはできませんこれは縮小した後に動作

 var app = angular.module('myApp', []); 
 
     app.controller('myCtrl', myCtrlFunction); 
 
         
 
     function myCtrlFunction() { 
 
      this.myUrl = $location.absUrl(); 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
    <div ng-app="myApp" ng-controller="myCtrl as vm"> 
 
     <p>Here I put my var myUrl:</p> 
 
     <h3>{{vm.myUrl}}</h3> 
 
    </div>

myCtrlFunction()の内容を宣言する方法を変更する必要がありますか?

答えて

0

はい、依存性注入があるためです。あなたの現在の設定では、コントローラは$ locationをグローバル変数にする必要があります。また、パラメータ名の文字列値を配列に渡す必要があります。角度は、パラメータが縮小アルゴリズムによって変更された後に何を注入するかをまだ知っています。

var app = angular.module('myApp', []); 

app.controller('myCtrl', ['$location', myCtrlFunction]); 

function myCtrlFunction($location) { 
    this.myUrl = "This is myUrl content"; 
} 

か::

var app = angular.module('myApp', []); 
app.controller('myCtrl', myCtrlFunction); 

function myCtrlFunction($location) { 
    this.myUrl = "This is myUrl content"; 
} 
// tell angular what parameters are expected 
myCtrlFunction.$inject = ['$location']; 

More about dependency injection in Angular

だから、どちらかそれらの設定のいずれかを使用します。

+0

ありがとう! 'myCtrlFunction。$ inject = ['$ location'];'は 'myCtrlFunction($ location)'の後になければなりませんか?それとも問題ありませんか? – distante

+0

問題ではありません。ただ個人的な好み。 –

0

あなたは$ locationを注入する必要があります。

var app = angular.module('myApp', []); 
    app.controller('myCtrl', myCtrlFunction); 

    function myCtrlFunction(**$location**) { 
     this.myUrl = $location.absUrl(); 
    } 

実際に$ scopeキーワードを使用していないため、以前のバージョンを使い果たしました。しかし、$ locationを使用すると、特にそれを使用しているので、それを注入する必要があります。

+1

これは縮小では機能しません。 –

関連する問題