Tapestry5のゾーンを更新するために使用されるActionLinkでJS関数を呼び出すことができません

StackOverflow https://stackoverflow.com/questions/6825488

  •  26-10-2019
  •  | 
  •  

質問

私はタペストリーで1つの問題に直面しています。

問題 - データを表示するためにグリッドを使用しています。各行で、プラス(+)ボタンを表示します。プラス(+)ボタンをクリックすると、その行の内側の行が表示されます。私はこれを静的に達成しました。静的には、グリッドがデータをロードすると同時に、内側の行のデータを取得し、隠しフィールドに保存することを意味します。プラス(+)ボタンをクリックすると、非表示のデータフィールドを使用して内側の行を描画するJS関数を呼び出します。

今、ひねりがあります。私は同じことを動的にしなければなりません。これは、Plus(+)ボタンをクリックすると、非表示の行のデータを取得し、JS関数を呼び出して内側の行を描画する必要があります。これを達成するために、ゾーンとアクションリンクを使用して、内側の行データを動的に取得しました。ゾーンには、内側の行のデータが含まれる隠されたフィールドが含まれています。 ActionLinkをクリックすると、ゾーンが更新されてデータが取得されますが、その後JS関数を呼び出すことができません。

皆さんが問題を理解してくれたことを願っています。緊急にあなたの助けが必要です。

よろしく、
マヘンドラ

役に立ちましたか?

解決

問題は、ゾーンリフレッシュでJS関数を呼び出すことができないことです。そのため、1つの解決策があります。

ゾーンは最初に見えるか、見えない場合があります。ゾーンが更新されると、現在そうでない場合は見えるようになります。これは、Tapestry.ElementEffectクライアント側オブジェクトの関数によって達成されます。デフォルトでは、show()関数はこの目的に使用されます。 Tapestryに別のTapestry.Elementeffect関数を呼び出すようにしたい場合は、更新が発生したときに、ゾーンのshowパラメーターでその名前を指定します。

ゾーンがすでに表示されている場合、異なる効果関数を使用して変更を強調します。デフォルトでは、Highlight()関数が呼び出され、ゾーンのコンテンツが変更されたことを強調するために黄色のフェードを実行します。または、ゾーンの更新パラメーターで異なる効果関数を指定することもできます。通常の黄色のハイライト効果なしでタペストリーを更新するには、更新パラメーターの「show」を指定するだけです。

<t:zone t:id="myZone" t:update="show">

また、次のように、独自のJavaScriptエフェクト機能(低ケース名を使用)を定義および使用することもできます。

    Tapestry.ElementEffect.myeffectname = function(element){
 YourJavascriptCodeGoesHere; };

したがって、あなたの場合、以下のコードのように使用できます

<t:zone t:id="zoneId" t:update="yourfunction" >
// contain the your code                           
</t:zone>

したがって、ゾーンが更新されると、それはあなたの機能を呼び出します。

詳細については ゾーン効果関数

楽しみ。

よろしく、
マヘンドラ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top