Javascript 我可以用不同的方式组织路径吗?
我正在开发AngularJS应用程序,我是AngularJS新手,我正在Javascript 我可以用不同的方式组织路径吗?,javascript,angularjs,Javascript,Angularjs,我正在开发AngularJS应用程序,我是AngularJS新手,我正在$rootScope中设置一个大对象,以便在需要时从$scope中获得它 在这一点上,它看起来是这样的: Application.run(['$rootScope', function($rootScope) { $rootScope.Envato = { API : { Path : { Private : "/api/private/"
$rootScope
中设置一个大对象,以便在需要时从$scope
中获得它
在这一点上,它看起来是这样的:
Application.run(['$rootScope', function($rootScope) {
$rootScope.Envato = {
API : {
Path : {
Private : "/api/private/",
Public : "/api/public/"
},
Methods : {
Private : {
User : {
Vitals : $rootScope.Envato.API.Path.Private + "get-user-vitals.php",
Transactions : $rootScope.Envato.API.Path.Private + "get-earnings-and-sales-by-month.php",
Statement : $rootScope.Envato.API.Path.Private + "get-statement.php",
Sales : $rootScope.Envato.API.Path.Private + "get-recent-sales.php",
Account : $rootScope.Envato.API.Path.Private + "get-account-information.php"
},
Item : {
Purchase : {
Information : $rootScope.Envato.API.Path.Private + "get-purchase-information.php",
Download : $rootScope.Envato.API.Path.Private + "get-item-download-url.php"
}
}
},
Public : {
API : {
Releases : $rootScope.Envato.API.Path.Public + "get-api-releases.php"
},
Blog : {
Posts : $rootScope.Envato.API.Path.Public + "get-blog-posts.php",
Threads : {
Active : $rootScope.Envato.API.Path.Public + "get-active-threads.php",
Status : $rootScope.Envato.API.Path.Public + "get-thread-status.php"
},
},
Collections : $rootScope.Envato.API.Path.Public + "get-collections.php",
Items : {
Count : $rootScope.Envato.API.Path.Public + "get-number-of-items.php",
Popular : $rootScope.Envato.API.Path.Public + "get-popular-items.php",
Featured : $rootScope.Envato.API.Path.Public + "get-featured-items.php",
New : {
Marketplace : $rootScope.Envato.API.Path.Public + "get-new-items-from-market.php",
User : $rootScope.Envato.API.Path.Public + "get-new-items-from-user.php",
Random : $rootScope.Envato.API.Path.Public + "get-random-new-items.php"
},
Information : $rootScope.Envato.API.Path.Public + "get-item-information.php",
Prices : $rootScope.Envato.API.Path.Public + "get-item-prices.php"
},
Users : {
Total : $rootScope.Envato.API.Path.Public + "get-total-users-count.php",
Information : $rootScope.Envato.API.Path.Public + "get-user-information.php",
Items : {
Count : $rootScope.Envato.API.Path.Public + "get-user-items-by-site.php"
}
},
Search : $rootScope.Envato.API.Path.Public + "get-search-results.php"
}
}
}
};
$rootScope.$safeApply = function($scope, fn) {
fn = fn || function() {};
if($scope.$$phase) {
fn();
} else {
$scope.$apply(fn);
};
};
}]);
但这真是一团糟,我想知道是否有更好的方法,或者AngularJS还有其他一些很棒的东西可以帮我做类似的事情:)
编辑:显然,类似于
$rootScope.Envato.API.Path.Private
的东西不起作用,但我添加了它,因为这样更容易理解我要做的是什么。看起来您正在寻找服务。查看以了解如何创建它们
Application.factory('Envato', function() {
return {
API: {
Path: { ... },
}
};
});
Application.controller('SomeController', function($scope, Envato) {
$scope.thing = Envato.API...;
});
我正在使用.factory()
来创建我在一些控制器中使用的一些其他函数,但我也没有想过要为这个对象这样做。