問題タブ [google-closure-templates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
385 参照

bitbucket - カスタム Bitbucket Merge Check - 構成を送信した後、動的フィールドが 2 回レンダリングされます

Bitbucket 用のカスタム マージ チェックを作成しています。このチュートリアルに従うことから始めました: https://developer.atlassian.com/server/bitbucket/how-tos/hooks-merge-checks-guide/

たとえば、(指定された ID の) 複数の同様の入力フィールドを作成するボタンがあり、最終的に構成に格納されます。

まず第一に、私はこれに大豆を使用しました.1つの.textFieldなどへの呼び出しで静的テンプレートを作成しました. 問題なく動作しましたが、その場で新しい同様のフィールドを作成できませんでした ([新規追加] ボタンを押した後)。

そこで、JavaScript を使用して soy の構成からデータを取得します。構成全体を JS の「マップ」に書き直してから、すべてのフィールドを動的に (HTML コードに追加して) レンダリングし、構成から値を入力するか、ボタンを押して新しいフィールドを作成します。

それは機能します-field_[id]、たとえばfield_1、field_2などのキーの構成に保存されたすべてのデータを取得します.

しかし、バグがあります。[保存] ボタンを押して編集用のポップアップをもう一度表示すると、JavaScript が 2 回実行されることがわかります。すべてのフィールドが 2 回レンダリングされます。ほんの数秒後。構成を保存し、ページを更新してからポップアップをもう一度表示すると、そのような問題はありません。

atlassian-plugin.xmlファイル内の私のマージチェックの構成は次のとおりです。

そして、単純化した .soy テンプレート コード:

この場合、JavaScript が 2 回実行されるのはなぜですか? このような動的ビューを作成する他の方法はありますか?