这可能是一个愚蠢的问题.我知道AngularJS控制器使用
javascript代码将应用程序逻辑保持在视图之外.但我想知道我是否可以将外部javascript文件链接到控制器,所以它不必太长.
如果有可能你也会分享我将如何做的语法.就像是:
app.controller('demoCtrl',['$scope',function ($scope) { $scope.msgtxt='Hello World'; src=somejavascriptfile.js; }]);
解决方法
如果您的问题是控制器逻辑太长,那么您是正确的,这是代码味道.您希望使控制器尽可能薄,只需足够的逻辑来处理视图事件和更新模型(范围).如果要重构控制器代码,第一步是将逻辑提取到服务中(在角度语言提供者/工厂/服务中).然后可以将服务注入到控制器中,类似于注入$scope服务的方式.
有关如何执行此操作的详细信息,请阅读this sitepoint article.
下一步可能是寻找可以提取到指令中的逻辑(主要是UI相关).
如果您需要在角度应用程序中使用外部JavaScript库,最佳方法是将该脚本添加到html文件的scripts部分,并将功能包装在服务或指令中(如果它与UI相关).确保检查是否有可用于要引入的第三方库的角度模块.