アプリのロード時に保存されるデータをモデルから取得する Angular アプリケーションがあります。簡単にするために、プルされるデータを明示的に定義しました。
私が抱えている問題は、私のコントローラーの 1 つで、モデルから引き出されたデータを変更するコントローラーのロード時に関数を実行していることです。ポイントは、そのコントローラーのみを使用しているそのページの追加データが必要だということです。そのデータをモデルに保存したくありません(これが起こっていることです)。
私のモデル:
'use strict';
(function () {
var PotsMod = function ($log, _) {
return {
pots: [
{"comp" : "comp1"},
{"comp" : "comp2"}
],
getPots: function () {
return this.pots;
},
};
};
angular
.module('picksApp.models')
.factory('PotsMod', PotsMod);
})();
私のコントローラー:
(function () {
function AdmCtrl($log, $routeParams, PotsMod) {
var vm = this;
vm.pots = PotsMod.getPots();
vm.init = function() {
// populate pot.competition
_.forEach(vm.pots, function(pot) {
pot.comp = "test";
});
console.log(PotsMod.getPots());
}
vm.init();
}
angular
.module('picksApp.controllers')
.controller('AdmCtrl', AdmCtrl);
})();
vm.init() の最後の行である PotsMod.getPots() は、「comp」の値をテストとして、更新されたモデルを返します。
だから私は代わりにこれを試しました - 私は次のように vm.pots の下にデバッグ行を置きました:
var vm = this;
vm.pots = PotsMod.getPots();
console.log(vm.pots);
vm.init = function() {....
これは、オブジェクト値がテストされている配列も返します...
そこで、最後のことを 1 つ試し、vm.init() 関数にも追加のデバッグ行を追加しました。
var vm = this;
vm.pots = PotsMod.getPots();
console.log(vm.pots);
vm.init = function() {
// populate pot.competition
_.forEach(vm.pots, function(pot) {
console.log(pot.comp);
pot.comp = "test";
});
console.log(PotsMod.getPots());
}
vm.init();
この結果は私を混乱させます...コンソールの出力は次のとおりです。
[{"comp":"test"},{"comp","test"}]
comp1
comp2
[{"comp":"test"},{"comp","test"}]
モデルの値を使用して変数を定義し、その変数を更新された値で出力し、古い値を使用してそれらを出力し、モデルから更新された値を再度出力する方法がわからないため、ここで何かが欠けているに違いありません(このコードでは何もモデルに触れていませんが)。
どこかで根本的な間違いを犯しているようです。ありがとうございました。