1

親テンプレートにこれがあります:

{{#each oddsReactive in bet.oddsChecked}}
  {{>InputOdds arrayKey='oddsChecked' arrayIndex=@index}}
{{/each}}

ヘルパー「ベット」は、次のデータを提供します。

bet: () => ChecksCollection.findOne()

どこ:

ChecksCollection = new Mongo.Collection(null);
ChecksCollection.insert({
  oddsChecked: ['', ''],
  oddsAverages: ['', ''],
  oddsCompeting: ['', '']
});

親テンプレートから配列に要素を追加できるため、反応を維持するために「賭け」が必要です。

子テンプレート (InputOdds) からテキスト ボックスを編集すると、「keyup」のたびにフォーカスが失われます。また、最初の編集時に、最初の子テンプレートのテキスト ボックスから 2 番目のテンプレートに書き込んだ内容をコピーします。なんで?ローカル コレクションの反応性が UI を台無しにするのはなぜですか?

Template.InputOdds.events({
  'keyup input.form-control': function (event, template) {
    template.currentOdds.set(event.target.value);

    var objectForSet = {};
    objectForSet[template.data.arrayKey + '.' + template.data.arrayIndex] = event.target.value;
    ChecksCollection.update({}, {$set: objectForSet})

おそらくご想像のとおり、最後の行をコメントアウトすると、UI が混乱することはなくなります。最後の行で _.debounce または Meteor.setTimeout を推奨せずに、これを手伝ってください。UI の混乱を遅らせるだけなので、すぐに反応できるようにしたいのです。

おそらく不要ですが、これは子テンプレートの html です。

<template name="InputOdds">
  <div class="form-group">
    <label for="{{arrayKey}}{{arrayIndex}}">{{label}}</label>
    <div class="input-group">
      <input type="text" class="form-control" id="{{arrayKey}}{{arrayIndex}}" value="{{odds}}"
             placeholder="{{placeholder}}">
                    <span class="input-group-addon">
                      {{#if equals isValidOddsFormat 'yes'}}
                        <span style="color:green" class="glyphicon glyphicon-ok"></span>
                      {{/if}}
                      {{#if equals isValidOddsFormat 'no'}}
                        <span style="color:red" class="glyphicon glyphicon-remove"></span>
                      {{/if}}
                    </span>
    </div>
  </div>
</template>
4

1 に答える 1

0

これは Meteor's Blaze のバグです: https://github.com/meteor/meteor/issues/6111

誰かが回避策を考えられる場合は、その git のクローンを作成し、それを見つけて、私に知らせてください!

于 2016-01-29T14:13:33.053 に答える