0

この質問はすべて正規表現に関するものだと確信しています。

ここにある JQM ルータープラグインを使用しています。正規表現を使用してページを照合し、イベント ハンドラーをバインドします。ドキュメントには次のように記載されています。

典型的な間違いは、$ 演算子を忘れることです。#product と #productList などの 2 つのページがある場合、架空のルート「#product」は両方のページに一致し、予期しない動作につながります。

Ok。#it​​em ページと #items ページがあるので、#item の前に $ を付けました。しかし、今ではイベント ハンドラーをまったくバインドしません。ドルを使用しない場合、アイテムのバインディングが両方のページに適用されます。これが実際の実装です。

var router = new $.mobile.Router([
    {"#items": {events:"i", handler: items.controller.init}},
    {"#items(?:[?/](.*))?": {events:"bs", handler: items.controller.onPageBeforeShow}},

    {"#item": {events:"i", handler: item.controller.init}},
    {"#item(?:[?/](.*))?": {events:"bs", handler: item.controller.onPageBeforeShow}},

]);
4

2 に答える 2

0

接頭辞ではなく、後置する必要があります。

#items$
#items(?:[?/](.*))?$
#item$
#item(?:[?/](.*))?$
于 2012-08-13T15:35:58.383 に答える
0

$、正規表現の文字列の末尾に一致します。最初に置くのではなく、最後に置きたいのです。

例えば:

#product
  matches
#product
#productList

#product$
  matches
#product

このコードを試してください:

var router = new $.mobile.Router([
    {"#items$": {events:"i", handler: items.controller.init}},
    {"#items(?:[?/](.*))?$": {events:"bs", handler: items.controller.onPageBeforeShow}},

    {"#item$": {events:"i", handler: item.controller.init}},
    {"#item(?:[?/](.*))?$": {events:"bs", handler: item.controller.onPageBeforeShow}},

]);
于 2012-08-13T15:33:51.117 に答える