Tar*_*gar 8 standards angularjs angularjs-directive angularjs-controller
请原谅我,如果这听起来很愚蠢,但我现在已经使用AngularJS一段时间了,我看到有人告诉我将我的逻辑包装在一个指令(或服务?)而不是我的控制器中,只保留我控制器中的绑定.除了指令的可重用性方面还有其他原因吗?
到目前为止,我还没有真正理解为什么会这样.不写指令会带来很多开销吗?我没有遇到任何在我的控制器中编写逻辑的问题,而且很容易.这种方法的缺点是什么?
ngL*_*ver 13
控制器是完成所有操作以及与范围相关的所有操作的正确位置.这是你写所有的地方
$scope.$watch(...)
Run Code Online (Sandbox Code Playgroud)
并定义$scope您需要从视图中访问的所有函数(如事件处理程序).通常,事件处理程序是计划函数,它又将函数称为服务.
$scope.onLoginButtonClick = function(){
AuthenticationService.login($scope.username,
$scope.password);
};
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,您可以在其中添加promise成功处理程序.
DONT:在控制器中编写业务逻辑
有一个非常具体的原因,为什么早期的例子是这样的.它向您展示了一个$scope函数,该函数又在服务中调用函数.控制器不对登录机制或登录方式负责.如果您在服务中编写此代码,则将服务与控制器分离,这意味着您希望使用相同服务的任何其他地方,您需要做的就是注入并取消该功能.
未来财务主任的规则: