このようなブレイズテンプレートがあります。
{{>jobsheetsTable companyId=companyId}}
テンプレートのJSには、次のようなonCreated関数があります...
Template.jobsheetsTable.onCreated(function(){
const instance = this;
instance.companyId = new ReactiveVar();
console.log(instance, instance.data, instance.data.companyId);
if(instance.data.companyId){
instance.companyId.set(instance.data.companyId);
}
}
問題は、console.logステートメントで奇妙なことに気づくということです...
instance
data
でインスタンスを正しく出力していますオブジェクトと
companyId
instance.data
ただし、
{companyId: undefined}
を返します
。
私は
instance.data
を変更していませんどこでも、このテンプレートに渡される関数は
companyId
を変更しません
。
更新:meteor 1.6.1を使用します。
回答 1 件
関連記事
- 'this'はコールバックコンテキストで未定義になります
- Meteor、useTracker mongocollectionfindOneは未定義を返し、正しい値を返します
- ページを更新するとき、reactフックのコンテキスト状態は未定義です
- 指定されたID未定義のコンテキストが見つかりません
- Meteor React:最初のページの読み込み時に未定義のユーザーオブジェクト
- Meteor Collection Subscriptionが変更されなかったかどうかを知る方法。 [流星+ブレイズ]
- 再帰関数で返される値が未定義になるのはなぜですか?
- firebase uidは更新後に未定義になります
- 流星:ブレイズヘルパーでReactiveVarを使用できません
ザ・
onCreated
コールバックは、テンプレートの作成ごとに1回のみ実行されるため、取得するデータは、最初の作成に提供されるデータです(おそらく、属性がundefined
に設定されている場合) )。データコンテキストは最初のレンダリング後に変更される可能性があり、これは関数をトリガーしません。テンプレートは再作成されません。
onCreated
のデータコンテキストを追跡することが確実な場合 コールバック、Template.currentData()
を使用して、それにリアクティブな依存関係を設定する必要があります リアクティブデータソース。データが変更されたときに再実行するためにリアクティブコンテキスト内にある必要があるため、リアクティブコンテキストを作成する必要があります。そのための便利な方法はthis.autorun()
を使用することです。 、テンプレートが破棄されると計算が停止します。上記のコードには
autorun
が含まれています データコンテキストが変更されるたびに再実行されるブロック。