1

Sencha Touch 2 を Architect と ASP.NET MVC 4 WebApi バックエンドで使用する方法については、このチュートリアルに従いました: https://vimeo.com/45207356#すべてが機能しますが、単純なことです。詳細フォームから戻るとすぐに、itemtap イベント リスナが機能していないようです。保存、削除、または単に戻るボタンを押しても、メイン ビュー (リストのあるビュー) に戻るとすぐに編集フォームに戻ることができません。メイン ビュー コードは次のとおりです。

Ext.define('ClientTestApi.view.Main', {
extend: 'Ext.navigation.View',

config: {
    id: 'Main',
    items: [
        {
            xtype: 'list',
            title: 'Songs',
            id: 'ListePieces',
            itemTpl: [
                '<div>{Title}, {Artist}, {Album}, {Genre}, {Year}</div>'
            ],
            loadingText: 'Chargement...',
            store: 'PieceStore'
        }
    ]
}

});

そしてコントローラー:

Ext.define('ClientTestApi.controller.PieceSimple', {
extend: 'Ext.app.Controller',

config: {
    refs: {
        mainView: '#Main',
        formPiece: '#FormPiece',
        listePieces: '#ListePieces'
    },

    control: {
        "#ListePieces": {
            itemtap: 'onListItemTap'
        }
    }
},

onListItemTap: function(dataview, index, target, record, e, options) {
    var form = Ext.create('ClientMusiqueApi.view.FormPiece',
    {
        title: record.data.Titre
    });

    this.getMainView().push(form);
    form.setRecord(record);
}

何もせずに戻るボタンを押したときにも動作が発生するため、保存と削除のコードは省略しました。

そのため、アプリをロードすると、すべてが機能します。項目をクリックすると、編集フォーム ("FormPiece") が表示されます。戻ると(たとえばナビゲーションバーの戻るボタンで)、リストは正常に表示され、アイテムをクリックすると選択されますが、今回は編集フォームが開きません。誰も理由を知っていますか?

更新: 簡単なテスト (onListItemTap イベントにアラートを入れた) の後、戻った後でもイベントが発生することがわかりました。問題は「push()」メソッドにあるようです。しかし、Chrome のコンソールでトレースすると、問題なく動作します。明らかな理由もなく、編集フォームは表示されません。

4

2 に答える 2

2

リストを sencha に入れたいと思っていて、リスナがリストに取り組んでいない場合は、次のコードを参照して拡張しているものを確認することを忘れないでください。問題を解決するのに 5 日かかりました。コードに欠けているものはどこにも見つからなかったので、欠落しているスニペットは "extend:'Ext.navigation.View' でした:

Ext.define('iPhoneTestApp.view.Inbox', {
    extend: 'Ext.navigation.View',
    xtype: 'inbox',
    inline: true,
    requires: [ 'Ext.*','Ext.dataview.List' ],
    config: {
            items : [{
                        xtype: 'list',
                        inline: true,
                        id:'list',
                        itemTpl: '<div class="contact">{title} </div>',
                        data: [
                                { title: 'Item 1' },
                                { title: 'Item 2' },
                                { title: 'Item 3' },
                                { title: 'Item 4' }
                            ],
                        fullscreen: true,
                        listeners: {
                            itemtap: function(el){
                                Ext.Msg.alert('Warning', '3', Ext.emptyFn);
                            }
                        }
                }]
        }
});
于 2013-06-24T08:31:41.177 に答える
0

問題は編集フォーム自体であることが判明しました。フォームにレコード「id」フィールドを追加しましたが、それがエラーの原因のようです。したがって、ビデオをそのまま実行するだけで問題ありません。

于 2013-01-18T16:36:21.730 に答える