Javascript-angularJS:在哪里放出逻辑更好?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript-angularJS:在哪里放出逻辑更好?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1597字,纯文字阅读大概需要3分钟。
内容图文
![Javascript-angularJS:在哪里放出逻辑更好?](/upload/InfoBanner/zyjiaocheng/680/9cfcabb279414e8b9b6d35206bd26d68.jpg)
在我的每个控制器中,我都有这样的代码,当我单击视图中的某些链接时会执行这些代码:
$scope.logout = function() {
authenticationService.logout();
$scope.isAuthUser = false;
delete $localStorage.selectedModel;
$location.path('/login').search('key', null);
};
我是angularJS的新手,想知道:做得更好吗:
>将逻辑投入服务
要么
>将逻辑放在指令中?
与指令:我知道如何使用控制器:$scope.isAuth = false; -附带服务:除了现在像在每个控制器中一样编写它之外,我不知道该如何使用它,就像这样:
$scope.logout = function() {
authenticationService.logout();
myNewService.logout();
$scope.isAuthUser = false;
};
视图:
<a href="javascript:void(0)" data-ng-click="logout()">
<span>Sign Out</span>
</a>
但似乎也很糟糕…该怎么办?
解决方法:
这种逻辑与指令无关,这是肯定的.您已经具有authenticationService,因此这里正是放置登录/注销功能的业务逻辑的地方.我建议将这段代码从控制器移到该服务中.
当它是服务的一部分时,控制器中的唯一代码将是
$scope.logout = authenticationService.logout;
而已.控制器应该尽可能的薄,并且没有业务逻辑,视图逻辑当然也可以.
现在,关于$scope.isAuthUser. isAuthUser听起来很像authenticationService服务的属性,不是吗?毕竟authenticationService是一个对象,应该保存相关模型/数据层的方法和属性.因此,应该再次将其移入相同的服务.
如果您需要在模板中使用此标志(例如显示/隐藏一些按钮等),则可以将此服务一起公开到$scope / $rootScope属性中.说,在顶级控制器中,您可以执行以下操作:
app.controller('mainController', ['$scope', 'authenticationService', function($scope, authenticationService) {
$scope.auth = authenticationService;
}]);
然后在任何模板中您都可以简单地使用
<a href="#/logout" ng-click="logout()" ng-show="auth.isAuthUser">Logout</a>
内容总结
以上是互联网集市为您收集整理的Javascript-angularJS:在哪里放出逻辑更好?全部内容,希望文章能够帮你解决Javascript-angularJS:在哪里放出逻辑更好?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。