1

Asp.net MVC を使用して、必要なときにページをプルしています。私のページの構造は次のとおりです。

{
   Layout = "";
}

  <div data-role="page"> 
     ....


      <script type="text/javascript">
        $(document).one("pageinit", function () {

          ....
      </script>

  </div>

ページ構造を上記のままにしておくべきですか、それともスクリプトを 1 つのグローバルな外部 JavaScript ファイルに入れる必要がありますか (その場合、各「pageinit」を正しいページに関連付けるにはどうすればよいでしょうか)。

私が抱えている他の問題は、クロムに埋め込まれたスクリプトをデバッグすることです。これは埋め込まれているという事実に関連していますか?

4

2 に答える 2

0

私が提案する単一の JS インクルードに移行すると、コードが 1 か所にまとめられるため、コードの保守が容易になります。

pageinit初期化されている疑似ページの ID に基づいてコードを実行できます。

//setup initialization code for each pseudo-page that needs it
var myCode = {
    someID : function (event) {
        //run initialization code for the pseudo-page with the ID of "someID"
    },
    someOtherID : function (event) {
        //run initialization code for the pseudo-page with the ID of "someOtherID"
    }
};

//setup a delegated event handler for each pseudo-page's "pageinit" event
$(document).on('pageinit', '.ui-page', function (event) {

    //check if a function for this pseudo-page exists
    if (this.id in myCode) {

        //since the function exists, call it and pass "this" as the current pseudo-page as well as passing-in the "event" object
        myCode[this.id].call(this, event);
    }
});
于 2012-08-17T22:12:16.447 に答える
0

これが私がしたことです。

まず、必要になるすべてのスクリプトを 1 つの外部 JS ファイルにまとめました。

私の MVC レイアウト ページでは、data-role ラッパーの div を作成して、プロパティから id 属性を設定し、すべてのコントローラー アクションが一意の値を返します。

レイアウトページです。

<body class="ui-mobile-viewport">
    <div data-role="page" id="@ViewBag.PageId">

次に、コントローラー アクションで、一意の値をビューに返します。

public ActionResult Index()
        {
             ViewBag.PageId = "pageCustomers";

            return View();
        }

これは、次のように page.init イベントにバインドできることを意味します。以下のスクリプトは<script>、コントローラーが返す MVC ビューのタグでラップされ、ビューが読み込まれたときに特定のビューのカスタム JS コードを起動できるようにします。

 $('#pageCustomers').live('pageinit', function (event) {
    // do something
}
于 2012-08-20T05:28:36.627 に答える