【发布时间】:2018-08-24 23:51:22
【问题描述】:
我刚刚开始使用 AngularJS。当我第一次开始阅读它时,从初学者教程看来,控制器是 Angular 应用程序的基本构建块。然而,自从学习指令以来,我一直在创建自己的小 Angular 应用程序,只有指令,实际上不是一个控制器。我不明白为什么我需要一个控制器。
我见过的唯一使用控制器完成的事情就是将变量添加到范围:
angular.controller("myController",
function($scope)
{
$scope.x = 5;
$scope.y = 6;
}
)
但我也可以使用指令来做到这一点,方法是使用传递给链接函数的 scope 参数。
还有什么可以用控制器做的,而不能用指令做的吗?或者至少是控制器比指令更容易做的事情?
例如,如果我只需要使用一些变量 x 和 y 填充范围,我可以这样做:
angular.directive(
"myDirective",
function()
{
return {
link: function(scope, element, attributes)
{
scope.x = 5;
scope.y = 6;
}
};
}
);
【问题讨论】:
-
如果你的应用没有一个控制器……你会做什么?您可以使用 angular 指令等仅在 HTML 中构建前端,但如果您希望它做任何复杂的事情,您需要编写实际的 Javascript 代码,将其放入控制器中……
-
@deceze 你能举个例子,代码不能只放在指令的链接函数中吗?
-
您可以使用指令构建整个应用程序,但这并不意味着您应该这样做。如果您愿意,您也可以乘坐直升飞机前往杂货店,但还有更好的方法。如果你只有一把锤子……
-
如果你所做的只是在作用域上初始化变量……那么是的……区别有点学术。开始将控制器编写为类,通过依赖注入使用服务,您可能会开始看到不同之处。简而言之,控制器是一个持久的对象,它与特定的视图/模板并存,并以某种方式绑定到它。
link只是一个一次性回调函数。它们可以部分用于相同的目的,但它们的生命周期却大不相同。完整的解释可能会很长……
标签: javascript angularjs