2

私はこのコードを持っています:

Meteor.subscribe('practices');

Session.set('practice', 'Practice 1');

Template.laps_t.laps = function () {
  var obj = Practices.findOne({name: Session.get('practice')});
  return obj.lap_n;
};

そして、私はエラーが発生しています: Uncaught TypeError: Cannot read property 'lap_n' of undefined.

私はそれlap_nが実際に のプロパティであることを知っていますobj

私は自動サブスクライブを使用していません。何か案は?

編集:

解決しました。みんなありがとう。

if(obj){ return obj.lap_n } あなたが言ったように、うまくいきました。

4

2 に答える 2

2

テンプレート内のオブジェクトの存在を常に確認する必要があります。これが機能する方法は、おそらくサブスクリプションがサーバーからmongoデータを取得する前であっても、ページロード時にテンプレートがすぐに実行されるため、その場合objは未定義になり、期待するプロパティがありません. ただし、テンプレートはリアクティブであるため、データが利用可能になると、Practices.findOne呼び出しが再評価され、テンプレートが再実行されます。そして、それはうまくいきます。

于 2013-01-07T14:59:15.747 に答える
0

データが到着するまで待つ必要があるかもしれないので、追加してみてください

if obj
    return obj.lap_n
else
    return {
        lap_n: 0
    }
于 2013-01-07T13:46:08.503 に答える