2017-03-21 27 views
0

因此,我有一個角度應用程序,我創建了一個使用PhoneGap的混合Android應用程序。但目前,我有一個問題 -配置由angularjs和phonegap使用變量創建的android應用程序

在角碼中,有許多地方在製作API調用的servicecontroller文件中。現在,進行API調用的服務器的路徑需要可配置,即對單個文件中的變量進行更改應反映所有角度文件中的更改。我有一個使用可以使用的變量的想法 - 說變量是configurableVar;那麼變量可以作爲這樣的 - http://$rootScope.configurableVar/api/call(我不知道是否rootScope變量可以用PhoneGap的使用)

目前的API調用是這樣的 - http://serverpath:port/api/call但這SERVERPATH是硬編碼在每個控制器和服務文件。

另外,在這種情況下可以使用config.xml文件嗎?如果是的話,那麼我怎樣才能使用角度文件中config.xml中創建的變量?

回答

0

我有類似的情況,我想從生產/開發環境中分離變量值。

而不是使用$ rootScope.configurableVar,你應該使用angular constants。首先用角度常量更新您的API網址引用。

然後您可以使用gulp-ng-config生成常量文件。

例如,假設你有一個config.json文件:

{ 
    "local": { 
    "EnvironmentConfig": { 
     "api": "http://localhost/" 
    } 
    }, 
    "production": { 
    "EnvironmentConfig": { 
     "api": "https://api.production.com/" 
    } 
    } 
} 

使用插件也很簡單:

gulpNgConfig('myApp.config', { 
    environment: 'production' 
}) 

,這將產生以下代碼:

angular.module('myApp.config', []) 
.constant('EnvironmentConfig', {"api": "https://api.production.com/"}); 

因此,要使用這與吞噬:

var gulp = require('gulp'); 
var gulpNgConfig = require('gulp-ng-config'); 
var rename = require('gulp-rename'); 

gulp.task('config:production', function(){ 
    // this will generate a www/js/config.js file with production values 
    gulp.src('config.json') 
    .pipe(gulpNgConfig('myApp.config', { environment: 'production' })) 
    .pipe(rename('config.js')) 
    .pipe(gulp.dest('www/js')) 
}) 

要生成角常數,在終端只需使用以下命令:

gulp config:production 

而在你的應用程序angular.js只是使用常量:

angular.module('myApp.controllers').controller('myController', ['EnvironmentConfig', '$http', function(EnvironmentConfig, $http){ 
    $http.get(EnvironmentConfig.url + '/path'); 
}]) 
相關問題