嘿家伙第一次海报长时间潜伏:)我需要一些帮助和角度应用我正在“尝试”建立。我需要帮助的主要是获取应用程序的绝对路径,而不管工作目录树(如果我甚至说的那样)。我是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
答案 0 :(得分:0)
您需要使用Grunt设置构建过程:
这样,您可以检测您是否处于测试模式或生产模式。
通常,当您要构建项目时,可以通过在命令行中运行Grunt Debug
或Grunt 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)
})();