2017-03-31 53 views
0

我與角1.x的工作,這裏這裏被定義爲這是給錯誤代碼: -

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Angular JS Controllers</title> 
    </head> 
    <body> 
    <div ng-app="app"> 
     <h1>Controllers</h1> 
     <div ng-controller="MainCtrl"> 
     <p>{{message}}</p> 
     </div> 
    </div> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script> 
    <script type="text/javascript"> 
     angular.module('app', []) 
     .controller('MainCtrl', [$scope, function($scope){ 
      $scope.message = "Hello"; 
     }]); 
    </script> 
    </body> 
    </html> 

有人給錯誤的ReferenceError:$範圍未定義

我認爲可能是$範圍是沒有得到注入然後我addded $範圍的陣列中的依賴於這樣的「應用程序」模塊: -

angular.module('app', [$scope]) 

但無濟於事。但什麼工作是下面的代碼: -

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Angular JS Controllers</title> 
    </head> 
    <body> 
    <div ng-app="app"> 
     <h1>Controllers</h1> 
     <div ng-controller="MainCtrl as ctrl"> 
     <p>{{ctrl.message}}</p> 
     </div> 
    </div> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script> 
    <script type="text/javascript"> 
     angular.module('app', []) 
     .controller('MainCtrl', [function(){ 
      this.message = "Hello"; 
     }]); 
    </script> 
    </body> 
    </html> 

我使用ctrl.messaage指在HTML消息模型,只有它的出現不是otherwise.But爲什麼!

爲什麼我不能在這裏使用$ scope,如果我可以怎麼做! / 基本上這和前面的代碼有什麼區別?

+1

只是在調用數組時調用$ scope作爲''scope''。像'.controller('MainCtrl',['$ scope',function($ scope){' –

+1

應該是'... ['$ scope',function($ scope)...' –

回答

2

它就是這樣的。

angular.module('app', []) 
    .controller('MainCtrl', ["$scope", function($scope){ 
     $scope.message = "Hello"; 
    }]); 

而且最好使用controllerAs語法

angular.module('app', []) 
    .controller('MainCtrl', ["$scope", function($scope){ 
     var vm = this; 
     vm.message = "Hello"; 
    }]); 

並鑑於使用

<div ng-controller="MainCtrl as ctrl"> 
+0

爲什麼使用更好controllerAs語法。 –

+1

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

2

當使用數組作爲必須使用字符串作爲控制器-方法的第二個參數值。這使您可以重命名依賴項模塊。

<script type="text/javascript"> 
     angular.module('app', []) 
     .controller('MainCtrl', ["$scope", function($scope){ 
      $scope.message = "Hello"; 
     }]); 
    </script> 
3

嘗試是這樣的

angular.module('app', []) 
    .controller('MainCtrl', ['$scope', function($scope){ 
     $scope.message = "Hello"; 
    }]); 
2

您需要添加周圍$scope報價,當你將其注入到控制器中。 AngularJS將查看這些字符串變量,以確定它需要安全地注入到應用程序中。

angular.module('app', []) 
    .controller('MainCtrl', ['$scope', function($scope){ 
     $scope.message = "Hello"; 
}]);