3

Telescopeの作業中に奇妙なバグに遭遇しました。現在、投稿編集ページで [送信] をクリックすると、このエラーが複数回トリガーされます。

Exception from Meteor.flush: TypeError: Cannot read property 'parentNode' of null

post_edit.htmlに絞り込みました:

<div class="control-group post-form-category">
  <label class="control-label">Category</label>
  <div class="controls">
    {{#each categories}}
      <label class="radio inline">
        <input id="category_{{_id}}" type="radio" value="{{name}}" name="category" {{#if isChecked }} checked {{/if}}/> {{name}}
      </label>
    {{/each}}
  </div>
</div>

そして、ここにcategoriesヘルパーがあります:

categories: function(){
  return Categories.find();
}

両方の {{#each}} ループ (.post-form.category にあるものと .post-form-user にあるもの) を削除すると、エラーはなくなります。何が起こっているのか分かりますか?これらの {{#each}} に何か問題がありますか?

アップデート

問題は「checked」属性にあるようです。しかし、次のようなことをしても

<input type="radio" value="{{name}}" name="category" {{isChecked}} />

それでもエラーが発生します。

4

3 に答える 3

2

問題は、サポートしていないこと{{#if isChecked }} checked {{/if}}です。#ifHTML タグ内でブロック ヘルパー ( を含む) を使用することはできません。代わりに、適切な文字列を返すヘルパーを作成する必要があります。

于 2013-01-03T00:30:08.690 に答える
1

これは Meteor のバグに関連していることが判明しました。バグが修正されるまで、簡単な解決策があります。

post_edit.js に移動し、Meteor.users.find() を Meteor.users.find().fetch() に置き換えて、SELECT の #each を非アクティブにします。

@dgreenspに感謝

于 2013-02-11T02:01:58.793 に答える
0

リアクティブ テンプレートをブロック ヘルパー内に配置する代わりに、どのカテゴリがチェックされているかを判断して文字列を挿入するカスタム ハンドルバー ヘルパーを作成しました。

Handlebars.registerHelper('categoriesChecked', function (context, options) {
var ret="";
var i,k, len;
var docs = context.collection.docs;
var lineItem = {};
for (i in docs) {
 lineItem.name = docs[i].name;
 lineItem._id = i;
 lineItem.isChecked = "";
 for (k = 0, len = this.categories.length; k < len; k++) {
  if (this.categories[k] == docs[i].name) {
   lineItem.isChecked = "checked";
  }
 }
ret+= options.fn(lineItem);

}
return ret;
});

.html

{{#categoriesChecked categories}}
        <label class="radio inline">
        <input id="category_{{_id}}" type="radio" value="{{name}}" name="category"   {{isChecked}} /> {{name}}
        </label>
{{/categoriesChecked}}
于 2013-01-14T13:01:06.837 に答える