私のAngularアプリケーションには、アプリケーションのさまざまなコンポーネントで使用されるConfiguration構造を格納するサービスがあります。AngularJs分離スコープのサービス
myApp.factory("guiConfigService", ['$http', function($http) {
var guiConfig = {};
var self = {
setGuiConfig: function (callback) {
guiConfig = {"Functions" : {
"FunctionIds" : [
"3",
"5",
"10",
"last_entry"
]
}};
if (undefined !== callback) {
callback(guiConfig);
}
},
getGuiConfig: function (buzzword, callback) {
callback(guiConfig[buzzword]);
}
}
return self;
}]);
私の問題:
で.run
でguiConfigService
が機能setGuiConfig
によって.json
ファイルから設定を読み込み、機能getGuiConfig
により、特定のコンポーネントのデータを返すことができることを-phase私のコンポーネントのコントローラーは、私のサービスのgetGuiConfig
機能から戻ってくるものを操作できるようにしたいとします。私は属性FunctionIds
の最後の項目を削除したいとします。この操作は私のコントローラのオブジェクトに影響するだけでなく、私のサービスのguiConfig
-Objectを操作します。
たとえば、this JsFiddleを参照してください。私はすでに試した何
:
- まず私はこの問題は私がコールバック関数を呼び出して直接オブジェクトを返さないで、と思ったが、私が試した、どちらか動作するようには思えません。
- 私のサービスの
guiConfig
オブジェクトのコピーを送信することはJSON.parse(JSON.stringify(guiConfig[buzzword]))
で動作していますが、私には正しい方法がないように見えます。
実際のオブジェクトへの参照なしに、サービス中のオブジェクトからデータを返す良い方法はありますか?
コールバック関数でangular.copy()を使用できます。 – Dev
コントローラ内のconfigsの通常のコードは〜: config = angular.extend(ctrl.config || {}、service.getNewGuiConfig()); –