私は私のクラスの1つにトラッカーを持っています。このクラスは、いくつかの計算を行い、オブジェクトの配列を返す別のクラスから変数をインポートします。私はこのデータをテーブルに移そうとしています。それは通常、私はdbのデータを引っ張っているときに、トラッカーがその依存関係を置くので、しかし私は配列を使用しているときに見つけることができますそれは変数に依存し、空の配列の半分。流行変動のための流星トラッカー
この例でわかるように、badDebtsNameSpaceは別のクラスからインポートされた配列変数です。しかし、常にundefinedを返します。
Tracker.autorun(function() { // Tracker function for reactivity
if(typeof badDebtsNameSpace.globalDebCalc != "undefined"){
cashInData[0] = badDebtsNameSpace.globalDebCalc['fromOpeningDeb'];
cashInTable.loadData(cashInData);
cashInTable.render();
}
console.log(badDebtsNameSpace)
});
コンソールのログから印刷されたデータを見ると、すべてのことはうまくいくようです。なぜこれが起こっているのかに関するアイデア。
おかげ
更新
要求としてより多くのコード。次に、変数をエクスポートする出力クラスの一部を示します。
私がコメントで述べたようにあなたが反応性の配列でこれを行うことができますが、あなたは tracker dependencyこのTracker
ができるように、基本的に他のいくつかの計算に依存するレジスタを使用することができますパッケージを追加したくない場合は
export var prodNameSpace = {};
export var overheadsNameSpace = {};
export var fixedAssetsName = {};
export var fundingNameSpace = {};
export var globalDebCalc;
export var badDebtsNameSpace;
export var productSummary;
export var assetSummary;
export var vatSummary;
export var overheadsSummary;
export var fundingSummary;
//Overheads Tracker TO Calc Data
Tracker.autorun(function() { // Tracker function for reactivity
var tempData = Session.get('data');
var overs = Overhead.find({fileId: tempData._id}).fetch();
var globalData = GlobalWhatIfData.find({fileId: tempData._id}).fetch();
if(overs.length > 0 && globalData.length > 0){
for(var i in overs){
var percentageOf = PercentageOfData.find({parentId: overs[i]._id}).fetch();
var vatRef = VatDataRef.find({parentId: overs[i]._id}).fetch();
if(percentageOf.length > 0 && vatRef.length > 0){
var n = overs[i].description;
overheadsNameSpace[n] = new OverheadCalc(productSummary, percentageOf, vatRef, globalData);
}
}
overheadsSummary = new OverheadsCalc(overheadsNameSpace);
}
});
//Bad Debt Tracker
Tracker.autorun(function() { // Tracker function for reactivity
var tempData = Session.get('data');
var bds = BadDebts.find({fileId: tempData._id}).fetch();
var globaDeb = GlobalDebtors.find({fileId: tempData._id}).fetch();
if(bds.length > 0 && globaDeb.length > 0){
for(var i in bds){
badDebtsNameSpace = new BadDebtsCalc(bds, productSummary, globaDeb);
}
}
});
はトラッカーとのことの一つは、彼らがトリガされるために*無効*データソースを必要とすることです。 'badDebtsNameSpace.globalDebCalc'は反応的なデータソースですか?それが定義されているかどうかには影響しませんが、輸入/輸出にはおそらく他の問題があります。 –
エクスポートはデータベースデータから行われます。彼らはまた、トラッカーでdepeningしています –
どのように私はあなたのコードの詳細を参照する必要があると思うどのように反応性バースを使用したと思うだろう –