我有一个侧边栏,其中包含来自各种社交媒体的提要,以及AngularJS中的一项服务,用于查询我的API的数据。以下是控制器以及服务(按此顺序)。为什么页面加载时不执行它?当页面呈现给客户端时,我应该如何重写代码以使其加载数据?
angular.module('HomeCtrl', ['MediaServ']).controller('HomeController', [
'$scope',
'MediaServ',
'$rootScope',
function($scope, $rootScope, MediaServ){
if ($rootScope){
$scope = $rootScope;
}
function handleRes(response){
console.log('hello!');
}
angular.element(document).ready(function () {
$scope.SocialMedia = function(){
MediaServ.feed()
.then(handleRes, handleRes);
}
});
}]);
angular.module('MediaServ', []).service('MediaServ', [
'$http',
function($http){
this.feed = function(){
return $http.get('/api/social/feed');
}
}]);
如果您首先将另一个模块注入到当前模块中,则只能使用该模块中的其他内容(包括服务,工厂,过滤器等)。在编写上面的代码时,您的模块彼此之间并不了解,因此您无法将MediaServ注入HomeController中。
要修复它,请将MediaServ模块注入到HomeCtrl模块中,如下所示:
angular.module('HomeCtrl', ['MediaServ'])...
我还将建议不要缩短名称(简化程序应该缩短名称,开发人员不应缩短名称),并且不要对服务和应用使用相同的名称。特别是最后一个项目可能在大型项目中引起很多混乱。就我个人而言,我更喜欢为模块命名诸如“ media.services”和服务“ MediaService”之类的东西,但这是个人喜好,只需保持明确的命名约定,以便您始终知道这是什么。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句