2016-12-22 21 views
0

我想知道爲什麼以下只適用於腳本1和3,而不是2。我想要使用它,因爲在我的項目中我不能使用$範圍。

謝謝!

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> 
 
<!DOCTYPE html> <!-- --> 
 
<html ng-app="app"> 
 
    <head> 
 
     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> 
 
     <meta charset="utf-8"> 
 
     <title>Modelo</title> 
 
    </head> 
 

 
    <body> 
 
     <div ng-controller="AppCtrl"> 
 
     Nombre: {{ name}} 
 
     <script type="text/javascript"> 
 
     var app=angular.module("app",[]); 
 
     function AppCtrl($scope) { 
 
      $scope.name= "Bob"; 
 
     } 
 
     </script> 
 
     </div> 
 
<br/> 
 
     <div ng-controller="MyCtrl"> 
 
     Nombre: {{ name }} 
 
     <script type="text/javascript"> 
 
     var app= angular.module("app",[]); 
 
      var MyCtrl = function() { 
 
       this.name = 'Nico'; 
 
      } 
 
      app.controller('MyCtrl',MyCtrl); 
 
     </script> 
 
     </div> 
 
<br/> 
 
    <div ng-controller="Algo as and"> 
 
     Nombre: {{and.name}} 
 
     <script type="text/javascript"> 
 
     //angular.controller('Algo',Algo); 
 
     function Algo() { 
 
      var vm = this; 
 
      vm.name = "Nicolas"; 
 
     } 
 
     </script> 
 
    </div> 
 

 
    </body> 
 
</html>

如果這是很難理解,請告訴我。

原諒我的英語。

+0

它的工作原理也是如此,只需將控制器定義爲「腳本3」爲「MyCtrl as ctrl」 – superUser

+0

「腳本3」僅適用,因爲您在此處使用的是舊版本的角度版本1.2.19。 'this'的使用已經在角度1.3中進行了修改,因此在當前的角度迭代中,#3也不起作用。 – Claies

+0

謝謝!這只是一件愚蠢的事情。 – elkaco

回答

0

ng-controller使用控制器的構造函數。在第一和第三種情況下,我們有控制器的構造函數。但在第二種情況下,它只是一個變量。所以,它不會工作。

ng-controller="myCtrl"當你定義這樣的事情時,angular試圖找到myctrl的構造函數。如果,function myCtrl(){}在那裏,它工作正常。這是第一和第三種情況發生的情況。

額外使用$scopethis是當有事件觀察員。但我們可以避免它們。欲瞭解更多信息,請點擊這裏https://johnpapa.net/do-you-like-your-angular-controllers-with-or-without-sugar/你可以知道要使用哪一個。

0

要訪問this而不是$scope,您必須使用controller as syntax,這是您的第三個示例。但是使用情況可能會有所不同,請參閱上面的文檔鏈接以獲取示例代碼。

This post談論控制器的優點作爲語法在真正的發展中,你可能想看看。

相關問題