jQueryMobileマネージャ使用時の動的コントローラの破棄

102 views
Skip to first unread message

ko...@wizard.co.jp

unread,
Jan 21, 2013, 2:57:15 AM1/21/13
to hifive...@googlegroups.com
 
--------------------------------------------------------------------
【hifiveのバージョン】1.1.1
【OS】Windows 7 Professional 64bit
【ブラウザ(バージョン)】 Firefox(17.0.1)
--------------------------------------------------------------------
 
初投稿です。
webサイトの開発でhifiveを利用させていただいております、小池と申します。
よろしくお願いいたします。

首記の件で投稿いたします。

jQueryMobileマネージャ使用時、以下の操作を行うとエラーになります。

1. あるページでjQMマネージャに登録していないコントローラをコントローラ化し、その後dispose()で破棄する。
2. コントローラをdisposeしたページから別のページに遷移する。
3. 遷移時のpagebeforeshowイベントで、jQMマネージャがdispose済みのコントローラのプロパティ(__controllerContext.executeListeners)にアクセスしようとする。
4. dispose済みコントローラなので、__controllerContext以下にアクセスできず処理が止まる。

動的コントローラをdisposeした後、jQMマネージャでのページ遷移はどのように行うのがよいでしょうか?

現在、h5-1.1.1.dev.jsのjqmControllerの'{document} pagebeforeshow' 内で、
dynamicContorollerに__controllerContextが存在するかチェックする処理を追加して対応しています。
__controllerContextがnullの場合、そのコントローラはunbind & dispose済みと判断し、続くリスナーフラグをオフにする処理を飛ばしています。

以上です。
よろしくお願いいたします。

simdy

unread,
Jan 21, 2013, 4:15:42 AM1/21/13
to hifive...@googlegroups.com
hifive開発担当の下田です。
ご指摘ありがとうございます。
 
本件、jQMマネージャにおいて
動的に作成されたコントローラが手動でdisposeされた場合の処理が不足していました。
 
FWのバグとして認識し、手動でdisposeされた場合に
そのコントローラがjQMマネージャの管理外になるよう修正します。
Issue登録済 ⇒ https://github.com/hifive/hifivemain/issues/151
 
なお、既にご存知かもしれませんが、
動的に作成されたコントローラをdisposeせずにページ遷移する(pageremoveが起きる)と、
動的コントローラを含め、
そのページを表示中に作成された全てのコントローラがdisposeされます。
# これはver.1.1.1でも動作します。
もし、コントローラの破棄タイミングを明示的に制御する必要がない
(遷移のタイミングで破棄されれば十分)場合には、
コントローラは作りっぱなしにしてしまうのが楽、かもしれません。

2013年1月21日月曜日 16時57分15秒 UTC+9 ko...@wizard.co.jp:

simdy

unread,
Jan 21, 2013, 5:46:14 AM1/21/13
to hifive...@googlegroups.com
下田です。
 
取り急ぎ、バグを仮修正したものを添付します。
(h5-1.1.2-snapshot.zip)
 
こちらでエラーはでなくなるでしょうか?
 

2013年1月21日月曜日 18時15分42秒 UTC+9 simdy:
h5-1.1.2-snapshot.zip

ko...@wizard.co.jp

unread,
Jan 21, 2013, 6:09:20 AM1/21/13
to hifive...@googlegroups.com
質問いたしました小池です。
ご返事ありがとうございます。

迅速に対応いただきありがとうございます。
エラーは出ず、ページ遷移できました。

今回、ページ内で動的コントローラ内部の値を変更するために
初期化パラメータを与えて作成→使い終わったら破棄
→初期化パラメータを与えて再度作成
とするため、diposeを使っていました。

jQMマネージャのコントローラ管理機能には大変お世話になっています。
今後ともよろしくお願いいたします。


2013年1月21日月曜日 19時46分14秒 UTC+9 simdy:

Osamu Shimoda

unread,
Jan 29, 2013, 2:34:25 AM1/29/13
to hifive...@googlegroups.com
下田です。

jQMマネージャのバグ修正を含んだhifive ver.1.1.2をリリースしました。
こちらをお使いいただければと思います。

ver.1.1.2リリースノート:
http://www.htmlhifive.com/conts/web/view/release-notes/WebHome#Hver.1.1.22820132F12F2929

また不具合等見つかりましたらお知らせください。
これからもよろしくお願いします。


(2013/01/21 20:09), ko...@wizard.co.jp wrote:
> 質問いたしました小池です。
> ご返事ありがとうございます。
>
> 迅速に対応いただきありがとうございます。
> エラーは出ず、ページ遷移できました。
>
> 今回、ページ内で動的コントローラ内部の値を変更するために
> 初期化パラメータを与えて作成→使い終わったら破棄
> →初期化パラメータを与えて再度作成
> とするため、diposeを使っていました。
>
> jQMマネージャのコントローラ管理機能には大変お世話になっています。
> 今後ともよろしくお願いいたします。
>
>
> 2013年1月21日月曜日 19時46分14秒 UTC+9 simdy:
>
> 下田です。
> 取り急ぎ、バグを仮修正したものを添付します。
> (h5-1.1.2-snapshot.zip)
> こちらでエラーはでなくなるでしょうか?
>
> 2013年1月21日月曜日 18時15分42秒 UTC+9 simdy:
>
> hifive開発担当の下田です。
> ご指摘ありがとうございます。
> 本件、jQMマネージャにおいて
> 動的に作成されたコントローラが手動でdisposeされた場合の処理が不足していました。
> FWのバグとして認識し、手動でdisposeされた場合に
> そのコントローラがjQMマネージャの管理外になるよう修正します。
> Issue登録済 ⇒ https://github.com/hifive/hifivemain/issues/151 <https://github.com/hifive/hifivemain/issues/151>
> --
> このメールは Google グループのグループ「hifive User Group」の登録者に送られています。
> このグループに投稿するには、hifive...@googlegroups.com にメールを送信してください。
> このグループから退会するには、hifive-users...@googlegroups.com にメールを送信してください。
> http://groups.google.com/group/hifive-users?hl=ja からこのグループにアクセスしてください。
>
>


--
新日鉄住金ソリューションズ株式会社 技術本部
システム研究開発センター ソフトウェアシステム研究部
下田 修 <shimod...@ns-sol.co.jp>
Reply all
Reply to author
Forward
0 new messages