2012-05-04 13 views
2

networkモデルのインプレイス編集をセットアップしました。モデルのtitledescriptionの2つの入力フィールドがあります。ユーザーがタイトルをクリックすると、<input><h2>タグが正規のTodosの例のように切り替わります。メテオでのインプレイス編集:ヌルのプロパティ 'parentNode'を読み取ることができません

私はこのような関連のテンプレートにイベントを追加してい:

Template.network_edit.events = {} 

Template.network_edit.events['click #network-description'] = -> 
    Session.set('editing_network_description',true) 
    Meteor.flush() 
    focus_field_by_id('network-description-input') 

Template.network_edit.events['click #network-title'] = -> 
    Session.set('editing_network_title',true) 
    Meteor.flush() 
    focus_field_by_id('network-title-input') 

focus_field_by_id関数である予想通り、

var focus_field_by_id = function (id) { 
    var input = document.getElementById(id); 
    if (input) { 
    input.focus(); 
    input.select(); 
    } 
}; 

すべてが動作しますが、私は#network-descriptionをクリックしたとき、私は見ますコンソールのエラー:

Uncaught TypeError: Cannot read property 'parentNode' of null 

liveui.js#network-titleをクリックすると、そのようなエラーは発生しません。

#network-titleイベントを最初に、network-descriptionを2番目に設定すると、代わりに#network-titleをクリックするとエラーが表示されます。一般に、追加された最初のイベントはこのエラーをスローしますが、後続のイベントはスローしません。

私が言ったように、すべてが正しく動作するように見える(入力が現れる、フォーカスが合うなど)が、エラーは戸惑うので、何か不足している可能性があります。

+0

このプロジェクトはどこかで展開できますか? 'focus_field_by_id'関数を投稿してください。 – lashleigh

+0

focus_field_by_id関数の定義を追加しましたが、それらの呼び出しがコメントアウトされてもエラーがスローされます。私は現時点ではこれをどこにも公開していませんが、そうするでしょう。 –

+0

ええと、私はバグがこのコードにあるとは思わない。このエラーは、何かが定義されていないことを意味し、流星では、通常、データベースのロードが完了していないことを意味します。または、オブジェクトを予期していたときにテンプレートヘルパーがnullを返しました。または、セッション変数がまだ設定されていません。それらは私がFWIWに見える場所です。 – lashleigh

答えて

3

私はこれを再現できました。

これは、イベント処理中にDOMが変更された場合に発生するバグです。 Meteor.flush()への呼び出し後、イベントの元のターゲットはテンプレート内に存在しなくなりました。メテオのイベント処理コードはおそらく第2のハンドラが適用されているかどうかをチェックしているので、最初のものが壊れているようです。エラーは無害で、何も間違ってはいません。

次のリリースではイベント処理が書き直されており、このケースでは新しいコードがすでに通過しているという回帰テストが行​​われています。

ご報告いただきありがとうございます。

関連する問題