一尘不染

Angularjs中有没有办法用其他常量定义常量?

angularjs

我正在尝试用其他常量定义常量,但似乎无法完成,因为当所需常量依赖于它时,初始常量尚未准备就绪。我想确定这是否完全不可能。

目前,我有这样的常量:

angular.module('mainApp.config', [])
    .constant('RESOURCE_USERS_DOMAIN', 'http://127.0.0.1:8008')
    .constant('RESOURCE_USERS_API', 'http://127.0.0.1:8008/users')
    // Specific routes for API
    .constant('API_BASIC_INFORMATION', RESOURCE_USERS_API + '/api/info')
    .constant('API_SOCIAL_NETWORKS', RESOURCE_USERS_API + '/api/social')
    ;

后两个常数是我想要完成的


阅读 254

收藏
2020-07-04

共1个答案

一尘不染

定义控制器,服务和其他控制器之间的依赖关系的角度方法是通过依赖关系注入(DI)。因此,如果您有一个依赖于服务B的控制器A,则必须像这样创建它。

var myApp = angular.module("exampleApp",[]);

myApp.controller("aCtrl", function(serviceB){
    //Controller functionally here
});

可以看到,angular将检查serviceB依赖关系,并查找使用该名称创建的服务。如果不创建一个,则会出现错误。

因此,如果要创建一个依赖于常数B的常数A,则需要告诉angular
A依赖于B。但是常数不能具有依赖性。常量可以返回一个函数,但是DI对该常量不起作用。检查此小提琴,以便您可以了解DI适用于哪些方法。

因此,回答您的问题时,您无法使用其他常量定义常量。

但是您可以这样做:

angular.module('projectApp', [])
  .constant('domain','http://somedomain.com')
  .constant('api','/some/api/info')
  .service('urls',function(domain,api){ this.apiUrl = domain+api;})

  .controller('mainCtrl',function($scope,urls) {

      $scope.url = urls.apiUrl;

  });

检查此小提琴以查看其工作原理

如果您想了解有关DI的更多信息,请查看这篇文章

我希望这可以回答您的问题。

2020-07-04