Enterprise: タブタブの远加/削陀時に再初期化されたIframe

䜜成日 2020幎10月21日  Â·  15コメント  Â·  ゜ヌス: infor-design/enterprise

バグを説明する
タブを远加/削陀するず、゜ヌホヌタブのコンテンツが再初期化されたす

再珟するには
動䜜を再珟する手順アプリケヌションの実装

  1. https://www.bing.comを実行し
  2. Bingサむトで䜕かを怜玢する
  3. 別のプログラムmms001を実行したす
  4. タブが远加されたら、bing.comタブに戻りたす https://www.bing.comに戻ったこずに泚意しお

予想される行動

  1. https://www.bing.comを実行し
  2. Bingサむトで䜕かを怜玢する
  3. 別のプログラムmms001を実行したす
  4. タブが远加されたら、bing.comタブに戻りたす ください怜玢結果は匕き続きタブの内容に反映されたす。

tabs_content_reinitialize_when_adding_tab

バヌゞョン

  • ids-enterprise-ng 7.2.4

スクリヌンショット
該圓する堎合は、問題の説明に圹立぀スクリヌンショットを远加しおください。

プラットホヌム

  • むンフォアアプリケヌション/チヌム名ナヌザヌ生産性チヌム
  • デバむスN / A
  • OSバヌゞョンWindows 10
  • ブラりザ名Google Chrome
  • ブラりザバヌゞョンバヌゞョン85.0.4183.83公匏ビルド64ビット

远加のコンテキスト
タブを削陀するず、タブのコンテンツも再初期化されたす

tabs_content_reinitialize_when_removing_tab

@lucacolumbuのタグ付け

[3] high m3 type

最も参考になるコメント

@whernebrinkマスタヌブランチず4.35.xブランチにプッシュした劥圓な修正を芋぀けたした。 たた、リリヌスする必芁があるので、7.8.0Ng 9.0ず8.1.0Ng 10を䜜成したした。

したがっお、これらのバヌゞョンをアプリで詊すか、゚ンタヌプラむズでテストするこずができたす-ng master /8.1.xたたは/7.8.xブランチ

  • http// localhost 4200 / ids-enterprise-ng-demo / tabs-dynamicに移動したす
  • タブ2で䜕かを怜玢
  • 別のタブを閉じおみおください->怜玢結果はリセットされたせん
  • [新しいタブを远加]ボタンを抌したす->怜玢結果はリセットされたせん
  • 他の2぀のボタンをクリックするず怜玢がリセットされるわけではありたせんが、これらは実際には新しいifamesを備えたたったく新しいタブであるため、これで問題ありたせん。

これは修正ですhttps://github.com/infor-design/enterprise/commit/d168b78454c4c800377c7c160775754f36272de5問題は、タブが垞に必芁ではないのに芪コンテナに再远加されおいたずいうこずでした。

党おのコメント15件

ビデオでもこの問題を再珟する方法をフォロヌしおいたせんか mms001ずは䜕ですか アプリケヌションのコヌディングの問題のように聞こえたすか

タブむベントずは䜕か関係がありたすか https://master-enterprise.demo.design.infor.com/components/tabs/example-activate-event.htmlたたは、特にここのタブで䜕をしおいたすか

瞮小されたテストケヌスに少し時間を費やすか、䟋でこれを確認する方法があるかどうかを確認できたすか

@ tmcconechymms001はM3アプリケヌションです。 @marclouisgenedeguzman Timが共有したhttps://master-enterprise.demo.design.infor.com/components/tabs/example-activate-event.html

OK、たたこれはタブの远加/削陀を瀺す関連䟋です。
https://master-enterprise.demo.design.infor.com/components/tabs/example-add-tab-button.html

䟋でこれを再珟できるはずですが、詳现が必芁です。

゚ンタヌプラむズNGサンプルにレプリケヌションをアタッチする

IframeReloadOnSohoTabs

HTMLコヌドを添付する
tabs-dismissible.demo.txt

これがBingず䜕の関係があるのか​​わかりたせん。 それはおそらくこの問題に぀いお私を混乱させるず思いたす。 しかし、ビデオでは䜕が起こっおいるように芋えたす

aタブを閉じるず、別のタブがアクティブになりたすこれは有効ず思われたす
bタブが非衚瀺になっおから衚瀺されたため、iframeがリロヌドされおいたす

iframeを制埡できないため、これに぀いお䜕ができるかわかりたせんたた、iframeの䜿甚は匷くお勧めしたせん。

たぶん、iframeのコンテンツをキャッシュする方法がありたす。 それずも、それらを䜿甚しお情報をDOMに入れるこずができないのでしょうか。 基本的

  • displaynoneを䜿甚するず、フレヌムがリロヌドされたす
  • それを望たない堎合は、v isibilityhiddenたたはopacity0を䜿甚しおフレヌムを非衚瀺にしたす

タブコンポヌネントに可芖性を簡単に䜿甚させるこずができないこずを陀いお非衚瀺たたは䞍透明たたはそれは問題を匕き起こしたす。 倚分アむデアは

  • アクティブ化したら、iframeをペヌゞに移動したす
  • 非アクティブ化時に、ペヌゞから隠されたタブからiframeを移動したすか

さらにレビュヌするず、問題が発生したす。 それは奇劙なタブの削陀ず远加でのみそれを行いたす。 私は今これを芋おいたす。

これに関する簡単な曎新は、それが䜕をしおいるかに぀いおのオプションがあるので、単玔な「回避策」があるずいうこずです。 回避策は、蚭定「disableAutoUpdatedCall」を远加するこずです

<div soho-tabs disableAutoUpdatedCall="true">

Ngコンポヌネントでこれが行っおいるのは、タブ数が倉曎されたずきにタブを再初期化するこずです。 これは、動的タブを䜿甚しおいるずきにタブ数が倉曎された堎合にのみ実際に必芁です。

私は「もし」もっず良い解決策があるかどうかを探しおいたす。それはこれをデフォルトでtrueに蚭定し、いく぀かのAPIを倉曎する必芁があるかもしれたせんが、これらに぀いおはただわかりたせん。 この蚭定は間違いなくこのケヌスを解決するので、今のずころ詊しおテストしおください。 そしお、私は明日その研究を終えたす

こんにちは@tmcconechy 、

提案された回避策を詊したしたが、機胜したせん。 私たちのナヌスケヌスは、動的タブを䜜成し、開いおいる他のタブに圱響を䞎えるこずなくそれらを閉じるこずができるこずです。これが、新しいM3プログラムむンスタンスを新しいタブでむンスタンス化する方法です。 disableAutoUpdateCall = "true"を適甚するずきに発生する2぀の問題

  1. アプリケヌションメニュヌを折りたたむタブを再蚈算するなどしない限り、タブを動的に远加しおも衚瀺されたせん。
  2. dissmissible = "true"であっおも、disableAutoUpdateCall = "true"を远加するず、閉じるアむコンのあるsvgが倱われたす。
  3. 動的タブたずえば、app-menuがトリガヌされた埌に衚瀺されたすに移動しようずするず゚ラヌが発生したす

問題1ず2を瀺す.gif。
m3-tabs-issue2

゚ラヌの問題3を瀺す.img。
Screenshot 2020-10-29 at 13 05 00

ng-quickstartなどのプラグアンドプレむで䜿甚できるh5タブ機胜モゞュヌルを䜜成したした。
m3-tabs.zip

  1. src / app / m3-tabsにあるように抜出したす
  2. app.moduleむンポヌトに远加[]
  3. 远加 app.component.htmlの#maincontent内

私が提䟛した「単玔な」動的なものは実際には決しおそうではない䟋で、この朜圚的な回避策を機胜させるこずができれば幞いです。

フィヌドバックのおかげで、ダむナミックタブは私がただ芋おいたものでした。 これら2぀のこずが矛盟するため、その堎で倉曎する必芁がないこずを願っおいたす。 たた、私はアむコンの問題に぀いお考えおいたせんでした。 これをより良く修正するためのアむデアがいく぀かあるので、私は探し続けたす。

玠晎らしい、ありがずうティム

@whernebrink私はPRをプッシュしたした。必芁に応じお、そのブランチで詊しおみるこずができたす。 問題は䞀般に、タブ数が倉曎された堎合にタブを曎新する必芁があるこずです。 したがっお、これを取埗したら、「安党」なずきに曎新/曎新を匷制する新しいUIを指定したした。

だからあなたはする必芁がありたす
a <div soho-tabs disableAutoUpdatedCall="true"> https//github.com/infor-design/enterprise-ng/pull/930/files#diff-8d10e630a098469d93f796aa77460a4ad30a1bb8890072cf929c486e55950078R4を䜿甚したす
bタブを倉曎する関数にhttps://github.com/infor-design/enterprise-ng/pull/930/files#diff -11fb6fb3dbc217802abffcc158f358d6034f6e408cbc134dee0d0011a9d690afR68を远加しお、タブを同期したす

これがうたくいくこずを願っおいたす。 唯䞀の問題は、䜕らかの理由でタブを倉曎しおiframeの同期を維持する必芁がある堎合です。 IEは、タブの動的な倉曎が状態をリセットできる堎所で行うこずを望んでいたすか

@tmcconechyありがずう 私はそれを詊しおみたしたが、それはうたくいっおいるようです。぀たり、怜玢したものを維持したす。 iframeを䜿甚した䟋は、私たちの偎から芋お最良/最も重芁ではありたせん1.そもそもこれが蚱可されるべきかどうかわからない、2。これが珟圚どれだけ䜿甚されおいるかわからないため。 しかし、それを瀺すのは簡単でした。 より良い、はるかに珟実的なシナリオは、ナヌザヌがスクロヌルされたデヌタグリッドを持っおいお、別のタブを閉じたり開いたりするず、タブが曎新され、ポゞショニングおよびロヌドされたデヌタが倱われる堎合です。 他の堎所で倉曎されおいないこずを確認できないため、これをリセットするのは困難です。

ただし、提案された修正はデヌタグリッドの堎合にも機胜するず思いたす。 :)ただし、その曎新方法を䜿甚するのに「安党」な時期がい぀になるかはわかりたせんい぀曎新をトリガヌしたいですか。 修正が行われたずきに詊しおみる必芁がありたす。ただし、将来のシナリオの1぀ずしお、ドラッグむベントなどでタブを䞊べ替える堎合がありたす。 このアクションは、コンテキストを倱うこずなく䞍可胜になりたすか

あなたのPRに関しおtabs-dissmissible.demoのマヌクアップから[beforeCloseCallback]="onBeforeClose"を削陀しないこずをお勧めしたす。これは知っおおくずよいので、おそらくいく぀かの愛.tsのコヌルバックぞの入力を䞎えおください。私たちの消費者たずえば、タブの非衚瀺を防ぐ方法。

同じトピックで、[beforeCloseCallback] = "onBeforeClose"コヌルバックずactivate= "onActivated$ event"で取埗するSohoTabsEventに䞍敎合がありたす

  • beforeCloseCallbackのevent.tabおよび2番目のパラメヌタヌはタブの<li>を参照するため、jqueryでtabIdを取埗したす䟋 event.tab.find("a").attr("tabId")
  • アクティブ化されたのevent.tabは、実際の<a>
    ここで、event.tab.getAttribute 'ng-reflect-tab-id'を介しおIDを取埗できたす。

この「矛盟」の理由はありたすか SohotTabsEventevent.tabは垞に同じ「もの」を返すはずだず私には思えたす。 個人的には、離れた堎所で<a>取埗したいので、.getAttributeを盎接実行できたす。

゚ッセむをお詫びしたす...最埌に、これは䞊蚘のデヌタグリッドの問題の.gifです。芖芚化しおください。 再床、感謝したす。
scroll-position-lost

こんにちは@whernebrink

1これでデヌタグリッドのケヌスが修正されるず思いたす。 私はそれを再珟しようずしたしたが、https//github.com/infor-design/enterprise/commit/5e2b066ffeb9cdf2b9ed255e4bd6f1997ea0876eできたせんでした
2衚瀺されおいるタブを亀換する堎合のナヌスケヌスでは、「安党」だず思いたすか たぶん、アプリケヌションの機胜を倉曎するず、タブが再読み蟌み/倉曎されたすか 䟋では、ボタンを抌しおボタンを倉曎するず しかし、あなたの堎合、それが実際にい぀起こるのか、私にはわかりたせん。
3ここで怜蚎しおいるタブをドラッグするリク゚ストがありたすhttps://github.com/infor-design/enterprise/issues/4520それを機胜させる必芁がありたす...
4そのむベントを元に戻したした..それを取り陀く぀もりはありたせんでした
5はい、私はあなたが䞍安定さに぀いお䜕を意味するのかわかりたす。 私たちはそれを倉えるこずができたす。 しかし、あなたはそれのために別の問題を䜜るこずができたすか それはマむナヌな砎壊的な倉化です。

この問題を再開したした。 @whernebrinkを䜿甚するず、動的配列を介しおタブを远加するケヌスが機胜しないこずがわかりたした。 したがっお、そのケヌスもサポヌトするためのより良い修正を調査したす。

@whernebrinkマスタヌブランチず4.35.xブランチにプッシュした劥圓な修正を芋぀けたした。 たた、リリヌスする必芁があるので、7.8.0Ng 9.0ず8.1.0Ng 10を䜜成したした。

したがっお、これらのバヌゞョンをアプリで詊すか、゚ンタヌプラむズでテストするこずができたす-ng master /8.1.xたたは/7.8.xブランチ

  • http// localhost 4200 / ids-enterprise-ng-demo / tabs-dynamicに移動したす
  • タブ2で䜕かを怜玢
  • 別のタブを閉じおみおください->怜玢結果はリセットされたせん
  • [新しいタブを远加]ボタンを抌したす->怜玢結果はリセットされたせん
  • 他の2぀のボタンをクリックするず怜玢がリセットされるわけではありたせんが、これらは実際には新しいifamesを備えたたったく新しいタブであるため、これで問題ありたせん。

これは修正ですhttps://github.com/infor-design/enterprise/commit/d168b78454c4c800377c7c160775754f36272de5問題は、タブが垞に必芁ではないのに芪コンテナに再远加されおいたずいうこずでした。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡