0

私の場合、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つの異なる値を持つことができますか?

+0

それはコードをどのように細分化するかによって異なります。どのようなminifiererを使用していますか? – Liam

+0

ハードコードされた変数名をJSONの返品と照合しようとしていますか?それは壊れやすいようです... –

+1

'settings ['adIndex']'それはそれを変更しません。 – Icepickle

答えて

0
var settings = { 
    "adIndex": 0 // quotes around the key, JSON style 
    }; 

マイナーではこれをどのように処理するのかは100%確信していませんが、通常は文字列値を変更できません。この場合

var settings = {}; 
settings['adIndex'] = 0; 

は、変数 settingsが縮小されますが、文字列 'adIndex'は変更されません。上記の動作しない場合は、もう少し詳細な何かを行うことができます。

+0

答えていただきありがとうございますが、解決できません。質問が更新されました! – kilkus

関連する問題