私の場合、AngularJSを使用して、私はコントローラで使用できるいくつかの設定でjsonを持っています。 問題は、アプリケーションを縮小し、コントローラ変数名がjsonと一致しない場合に発生します。1つの変数を縮小しない方法は?
単一のvariabeを縮小しない方法はありますか?
マイコード: setting.json
{
"settings": {
"adIndex": 3
}
}
コントローラ:
function settingsService($q, $http, $log) {
var settings = {
adIndex: 0
};
var service = {
init: init,
getAdIndex: getAdIndex
};
return service;
function init() {
var deferred = $q.defer();
$http.get('assets/settings/settings.json').then(function(response) {
var loaded = response.data.settings;
if (loaded) {
settings = angular.extend(settings, loaded);
}
deferred.resolve(settings);
}, function(error) {
$log.info('Error loading settings', error);
deferred.reject(error);
});
return deferred.promise;
}
function getAdIndex() {
return settings.adIndex;
}
}
UPDATE
ご提案は、私は、コードにいくつかの変更をしたが、問題はまだ解決されていない後。 コントローラのコードは以下のようになります。
function settingsService($q, $http, $log) {
var settings = {
'adIndex': 0
};
var service = {
init: init,
getAdIndex: getAdIndex
};
return service;
function init() {
var deferred = $q.defer();
$http.get('assets/settings/settings.json').then(function(response) {
var loaded = response.data['settings'];
if (loaded) {
settings = angular.extend(settings, loaded);
}
deferred.resolve(settings);
}, function(error) {
$log.info('Error loading settings', error);
deferred.reject(error);
});
return deferred.promise;
}
function getAdIndex() {
$log.debug('Object: ', settings); // result: settings { adIndex: 3 }
$log.debug('Value: ', settings['adIndex']); // result: 0
return settings['adIndex'];
}
}
はどのように「adIndex」をログに2つの異なる値を持つことができますか?
それはコードをどのように細分化するかによって異なります。どのようなminifiererを使用していますか? – Liam
ハードコードされた変数名をJSONの返品と照合しようとしていますか?それは壊れやすいようです... –
'settings ['adIndex']'それはそれを変更しません。 – Icepickle