AngularJS中控制器和控制器之间有什么区别?

时间:2017-01-24 09:37:47

标签: javascript angularjs

我是AngularJS的新手,我对术语“控制器”感到困惑。和'控制器As'。 为什么我们一次使用两者?我想简要介绍一下这两个指令吗?

2 个答案:

答案 0 :(得分:1)

控制器 controllerAs 这两件事指的是同一件事 - 您想要在特定视图中使用的控制器。它们在访问其中的属性和函数的方式上有所不同。 controllerAs 语法是可选的,但我强烈推荐它。

编辑: controllerAs是您指定的控制器的别名,稍微修改了您在控制器中处理值的方式

如果您未指定 controllerAs ,您将使用控制器内的 $ scope ,您将直接访问控制器范围内的属性和功能,这或多或少是一种不好的做法。例如:

在控制器中:

$scope.employer = 'John';
$scope.totalEmployees = 15;

在视图中:

<div>{{employer}} has {{totalEmployees}} employees</div>

注意:查看视图如何直接从范围访问值。

但是,如果您指定 controllerAs

controller:'EmployeeController'

controllerAs:'emp';

方法略有不同,但更清洁,更易于维护:

在控制器中:

var emp = this;
emp.employer = 'John';
emp.totalEmployees = 15;

在视图中:

<div>{{emp.employer}} has {{emp.totalEmloyees} employees}}</div>

注意:现在您必须在视图中指定别名才能访问这些值。这是一种很好的做法,因为随着应用程序的增长,复杂性也会增加。使用 controllerAs ,您可以更好地控制应用程序,并且更易于维护和调试。

答案 1 :(得分:0)

你的html的内部控制器指令你可以访问分配给你的$scope变量的值,但是如果你使用controllerAs =“vm”语法;

你可能只是(在你的控制器中)做:

var vm = this;
vm.myModel = 'my model text'

因此您不需要为$ scope分配值,并且在您的html中可以访问它

<div>{{vm.myModel}}</div>