获得Angularjs的绝对路径

时间:2016-05-12 16:33:08

标签: jquery angularjs

嘿家伙第一次海报长时间潜伏:)我需要一些帮助和角度应用我正在“尝试”建立。我需要帮助的主要是获取应用程序的绝对路径,而不管工作目录树(如果我甚至说的那样)。我是angularjs的新手,这就是为什么我要来专业人士。

以下是我认为需要进入的代码段。

function MainCtrl(user, auth) {
  var self = this;

  function handleRequest(res) {
    var token = res.data ? res.data.token : null;
    if(token) { console.log('JWT:', token); }
    self.message = res.data.message;
  }

  self.login = function() {
    user.login(self.username, self.password)
      .then(handleRequest, handleRequest)
  }

  self.logout = function() {
    auth.logout && auth.logout()
  }
  self.isAuthed = function() {
    return auth.isAuthed ? auth.isAuthed() : false
  }
}

angular.module('app', [])
.factory('authInterceptor', authInterceptor)
.service('user', userService)
.service('auth', authService)
.constant('API', 'http://appsdev.tempportal.com/api')
.config(function($httpProvider) {
  $httpProvider.interceptors.push('authInterceptor');
})
.controller('Main', MainCtrl)
})();

你可以看到: .constant('API','http://appsdev.tempportal.com/api')就是我现在所拥有的。但是一旦完成,它将被转移到实时服务器。但主要问题是,在一年内,它很可能会被转移到具有新域名的新服务器。

因此,我需要获取当前的URL,以便我不必进入并将代码更改为新的URL。我不知道一年中会在哪里,或者3个月,所以我希望他们不必担心每次移动服务器时都要更改URL。

我已经看到了角度的$ location但我还没有真正使用它。我该怎么办?

希望我已经为您提供了足够的信息。如果您想要更多代码,请告诉我。在此先感谢您的帮助。而且我期待将来能够挑选更多的大脑。 :)

UA

1 个答案:

答案 0 :(得分:0)

您需要使用Grunt设置构建过程:

这样,您可以检测您是否处于测试模式或生产模式。

通常,当您要构建项目时,可以通过在命令行中运行Grunt DebugGrunt Production来完成此操作。

有很多方法可以做到这一点,但这是一个过于简单的例子。通常你会设置Custom Task来执行此操作:

示例:

grunt.initConfig({
  concat: {
    options: {
      // Task-level options may go here, overriding task defaults.
    },
    foo: {
      options: {
        // "foo" target options may go here, overriding task-level options.
        if(production){
             app.serverPath = "http://appsdev.tempportal.com/api";
        }
        else{ 
             app.serverPath = "http://appsdev.tempportal.com/api"; 
        }
       },
    },
    bar: {
      // No options specified; this target will use task-level options.
    },
  },
});

grunt.registerTask('dev', ['uglify']);
grunt.registerTask('production', ['minify']);

然后在MainCtrl

    angular.module('app', [])
.factory('authInterceptor', authInterceptor)
.service('user', userService)
.service('auth', authService)
.constant('API', app.serverPath)
.config(function($httpProvider) {
  $httpProvider.interceptors.push('authInterceptor');
})
.controller('Main', MainCtrl)
})();