2017-02-10 29 views
-2

我們可以用$scope作爲angularJS

angular.module('myApp',[]) 
 
      .controller("myController", function($scope){ 
 
      $scope.info = "Hello"; 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="myApp"> 
 
    <div ng-controller="myController"> 
 
     <input type="text" ng-model="info"> 
 
     {{info}} 
 
    </div> 
 
    </body>

,或者我們可以在controller明確地使用this,並考慮使用控制器名稱命名空間像一個命名空間:

angular.module('myApp',[]) 
 
      .controller("myController", function(){ 
 
      this.info = "Hello"; 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<body ng-app="myApp"> 
 
    <div ng-controller="myController as ctrl"> 
 
     <input type="text" ng-model="ctrl.info"> 
 
     {{ctrl.info}} 
 
    </div> 
 
</body>

我的問題是有什麼區別和選擇使用?

回答

1

鏈接Angularjs "Controller as" or "$scope"中的這個答案給出了對於控制器範圍和$範圍的解釋。

另外,從我自己的經驗來看,我更喜歡controllerAs語法。因爲,我通常將動態數據添加到一個對象數組。

當使用$作用域選項,當一個新的數據被推入數組,如$ scope.dataArray的NG-重複沒能刷新自己

當使用controllerAs語法,每當我推到數據dataArray對象,ng-repeat將新數據添加到視圖中。

發生這種情況主要是因爲,使用$ scope語法時,對數組的任何更改都會創建新的引用。但是,使用controllerAs語法時,數組引用始終保持不變。

請參閱ng-repeat not updating on update of array

+0

謝謝@Neerajkummar,我檢查了引用的答案。那麼,我們推薦使用「Controller as」語法?當使用'$ scope'以外的語法時,是否應該注意其他坑?因爲我閱讀了使用'Controller as'語法很少提及的[開發人員指南](https://docs.angularjs.org/guide),但大多數示例選擇了'$ scope'。 – armnotstrong

+0

@Neerajkummar,搜索'控制器vs範圍'給我一些很好的重複問題,將深入這些問題,並結束這個問題,謝謝你的努力和抱歉的麻煩。 – armnotstrong

+0

樂於助人@armnotstrong!到目前爲止,我還沒有看到使用ControllerAs語法的任何問題。在使用自定義指令時,最初我發現它很困難,因爲我不知道如何在自定義指令中使用ControllerAs。但總是有stackoverflow來幫助我們。乾杯! –

相關問題