2014-04-02 87 views
10

我是angularjs的新手。 如果您將函數賦值給$ scope或控制器中的這些關鍵字有什麼區別? 謝謝。控制器與控制器之間的區別

實施例(範圍):

.controller('TestCtrl', ['$scope', function ($scope) { 
    $scope.testFunc = function() { 
    }; 
}]); 

實施例(本)

.controller('TestCtrl', [function() { 
    var app = this; 
    app.testFunc = function() { 
    }; 
}]); 

回答

10

$scope是角框架和雙數據綁定functionnalities的一個核心概念。它例如,旨在分享其內容:

  • 模板
  • 指令

在例如模板,你需要的功能結合到scope到訪問它。你將無法直接調用this上綁定的函數。


編輯:感謝到BKM post該人士指出,這種行爲是可能的「控制器」語法直接結合模板到控制器。但是,您可以決定是否允許在模板中訪問控制器的所有對象/變量,而不是專用viewModelscope)。對於利弊,請參閱:https://groups.google.com/forum/#!topic/angular/84selECbp1I


它的角度,你需要了解的一個重要概念。

參見:

this keywork是指只的JavaScript object關於你controller,僅此而已。

8

比西說的是錯的。沒有必要將函數綁定到作用域以訪問它。

Angular JS的最新版本中,即1.2它們引入了一個新的關鍵字controllerAs,使其不可能在控制器內有範圍。

<div ng-controller="testCtrl as test"> 
    {{test.value}} 
</div> 

而在你的控制器

app.controller('testCtrl ', function() { 
    this.value = 'Hello World'; 
}); 

看到上面的控制器與出注入它$scope產生。

Here是一個很好的視頻教程解釋這個

+0

感謝poiting了這一點,編輯我的職務。 –

+0

@BKM這正是我看過的教程,看到了這個概念,所以我需要澄清它。 謝謝你的答案,夥計,歡呼! ;) –

相關問題