0

私は phonegap と phonejs を使用して、小さな Android アプリを作成しています。コードは以下です。

問題は、アプリケーションが 1) ロードされるデータの量がかなり少ないにもかかわらず、ロードに 2 ~ 3 秒かかることです 2) クリックに反応せず、表示したいオーバーレイが表示されない 3) 一般的なイベント処理されていないようです。作成された div の数が画面スペースを超えても、スワイプで画面をスクロールすることもできません 4) Android の戻るボタンでさえ機能しません。

エミュレータとデバイスの両方でこれをテストしましたが、最初はエミュレータが正常に動作しているだけではないと思っていましたが、後でデバイスでそれが改善されていないことがわかりました。私がしたことは、私にはかなり単純に思えます。配列を持ち、垂直にリストされた div のリストと、その配列からの div のクリック イベントを生成します。私は何を間違っていますか?

<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="viewport"
    content="user-scalable=no, width=320, initial-scale=1" />
<!-- <link rel="stylesheet" type="text/css" href="css/index.css" />-->
<title>My First Application</title>
<link rel="stylesheet" type="text/css" href="css/dx.common.css" />
<link rel="stylesheet" type="text/css"
    href="css/dx.android.holo-dark.css" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<script type="text/javascript" src="js/jquery-2.0.3.min.js"></script>
<script type="text/javascript" src="js/knockout-3.0.0.js"></script>
<script type="text/javascript" src="js/globalize.min.js"></script>
<script type="text/javascript" src="js/dx.phonejs.debug.js"></script>
<!--  <link rel="stylesheet" type="text/css" href="layouts/SlideOut/SlideOutLayout.css" />
        <link rel="dx-template" type="text/html" href="layouts/SlideOut/SlideOutLayout.html" />
        <script type="text/javascript" src="layouts/SlideOut/SlideOutLayout.js"></script> -->
<script type="text/javascript" src="js/transports.js"></script>
<script type="text/javascript">
    window.AppNamespace = {};
    $(function() {
        DevExpress.framework.html.layoutControllers.push({
            navigationType : "myNavigation",
            controller : new DevExpress.framework.html.DefaultLayoutController(
                    {
                        layoutTemplateName : "myLayout"
                    })
        });
        AppNamespace.app = new DevExpress.framework.html.HtmlApplication({
            namespace : AppNamespace,
            navigationType : "myNavigation"
        });
        AppNamespace.app.router.register(":view", {
            view : "home"
        });
        AppNamespace.app.navigate();
    });

    transports.sort(function(a, b) {
        return a.date > b.date;
    });
    // modify transport, add class
    for ( var jj = 0; jj < transports.length; jj++) {
        transports[jj].textbinding = transports[jj].date + " "
                + transports[jj].bookingnr;
        if (transports[jj].from == "Berlin") {
            transports[jj].css = "flight-item-b " + transports[jj].bookingnr;
        } else
            transports[jj].css = "flight-item-f " + transports[jj].bookingnr;
    }

    AppNamespace.home = function() {
        var viewModel = {
            detailsVisible : ko.observable(false),
            buttonVisible : ko.observable(false),
            popupTitle : 'Kaiis Pupspup',
            _transports : ko.observable(transports),
            selItem : ko.observable(transports[0]),
        }
        var me = viewModel;
        viewModel.onclick = function(selected) {
            //me.selItem(selected);
            me.detailsVisible(true);
            //alert (selected.arrival);
        };
        viewModel.hideDetails = function() {
            me.detailsVisible(false);
        }
        return viewModel;
    };
</script>
</head>
<body>
    <div data-options="dxLayout : { name: 'myLayout' } ">
        <div
            data-options="dxToolbar: { items: [ { text: 'TransPonder', align: 'center' } ] }"></div>
        <div
            data-options="dxContentPlaceholder  : { name: 'content', transition: 'slide' } "></div>
    </div>
    <div data-options="dxView: {name: 'home'}">
        <div data-options="dxContent : { targetPlaceholder: 'content' } ">
            <div data-bind="foreach: _transports()">
                <div data-bind="css: $data.css, click: $parent.onclick">
                    <div data-bind="text: $data.textbinding"></div>
                </div>
            </div>
        </div>
        <div data-bind="dxOverlay:{visible: detailsVisible }">
            <p>The text that should be shown in the overlaying window.</p>
            <div data-bind="dxButton: { text: 'Close', clickAction: hideDetails }"></div>
        </div>
    </div>
</body>
</html>

transport.js は次のようになります。

var transports = [
{
   bookingnr: "4HPXTJ",
   from: "Berlin",
   to: "Frankfurt",
   date: "2013-01-23",
   departure: "17:45",
   arrival: "19:00",
   carrier: "Lufthansa"
},
{
   bookingnr: "4HPXTJ",
   from: "Frankfurt",
   to: "Berlin",
   date: "2013-11-24",
   departure: "14:15",
   arrival: "15:30",
   carrier: "Lufthansa"
},
    ...
];
4

0 に答える 0