0

タイトルが示すように、フォーム テンプレートの 1 つにレーティ スター プラグインを追加しています (これを 1 回だけ実行します) が、何らかの理由で、スクリプトがスターを 2 回挿入します。

    <div id="star-rate" style="cursor: pointer;">
    <img alt="1" src="/assets/star-off.png" title="bad">
    &nbsp;
    <img alt="2" src="/assets/star-off.png" title="poor">
    &nbsp;
    <img alt="3" src="/assets/star-off.png" title="regular">
    &nbsp;
    <img alt="4" src="/assets/star-off.png" title="good">
    &nbsp;
    <img alt="5" src="/assets/star-off.png" title="gorgeous">
    <input name="review[rating]" type="hidden">
    <img alt="1" src="/assets/star-off.png" title="bad">
    &nbsp;
    <img alt="2" src="/assets/star-off.png" title="poor">
    &nbsp; 
    <img alt="3" src="/assets/star-off.png" title="regular">
    &nbsp;
    <img alt="4" src="/assets/star-off.png" title="good">
    &nbsp;
    <img alt="5" src="/assets/star-off.png" title="gorgeous">
    <input name="review[rating]" type="hidden"></div>

私はこれを手動で入力しませんでした。実際には、このレンダリングが適切に行われているように見えるチュートリアルに従っていました。以下は、バックボーンで書いたのと同じテンプレートで実行しているスクリプトです。

    <div class="form-group">
      <label for="review-rating">Rating: </label>
      <div id="star-rate"></div>
    </div>

    <script>
      $('#star-rate').raty({
      path: '/assets/',
      half: true,
      start: 0,
      scoreName: 'review[rating]'
      });
    </script>

この質問は2011年に一度投稿されたことがありましたが、役に立ちませんでした。rate の二重レンダリングの問題について何か考えがある人がいたら、助けてください。星の数と #star-rating div を囲む div を変更しようとしましたが、うまくいきませんでした。

4

1 に答える 1

0

最初の行を追加することで、render を 2 回呼び出した場合にレンダリングされたすべての星を破棄するようにプラグインに指示します。これは、ページが完全に更新されておらず、2 回レンダリングされるだけであるため、バックボーンを使用する場合によくある問題です。また、この問題を抱えている、またはこれから抱える人にとって、Backbone に非常に役立つ onRender パターンもあります。

    this.$('#star-rate').raty('destroy');
      this.$('#star-rate').raty({
      path: '/assets/',
      half: true,
      score: 3,
    scoreName: 'review[rating]'
    });
于 2015-08-14T16:43:54.003 に答える