2014-04-02 55 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这正是我看过的教程,看到了这个概念,所以我需要澄清它。 谢谢你的答案,伙计,欢呼! ;) –

相关问题