4

Sencha Touch 1.0 で開発を行っています。Ext.List を使用してリストをレンダリングしていますが、各リスト項目の開始をチェックボックスで開始したいです。また、構成オプションに指定された配列である配列項目の値に基づいて状態を変更したいと考えています。単純な Ext.form.Checkbox を Ext.List に追加する方法はありますか?

代わりに構成オプションに a<input type="checkbox".../>を使用すると<itemTpl>、表示が見にくくなり、チェックボックスでイベントをリッスンする方法がわかりません

これがあなたの目の保養のコードです:

Ext.regModel('Todos', {
    fields: ['title', 'completed_at']
});

var groupingBase = {
    itemTpl: '<div class="contact2"><strong>{title}</strong></div>',
    selModel: {
        mode: 'SINGLE',
        allowDeselect: true
    },
    // grouped: true,
    indexBar: true,

    onItemDisclosure: {
        scope: 'test',
        handler: function (record, btn, index) {
            alert('Disclose more info for ' + record.get('title'));
        }
    },

    store: new Ext.data.Store({
        model: 'Todos',
        sorters: 'title',

        getGroupString: function (record) {
            return record.get('title')[0];
        },

        data: [todos] //todos array is prev populated with required items' properties 
    })
};

myList = new Ext.List(Ext.apply(groupingBase, {
    fullscreen: true
}));
//List ends

tasksFormBase = {
    title: 'Tasks',
    iconCls: 'favorites',
    cls: 'card2',
    badgeText: '4',
    layout: 'fit',
    items: [
    myList, {
        xtype: 'checkboxfield',
        name: 'cool',
        label: 'Cool'
    }],
    dockedItems: [todosNavigationBar]
};  

//tasksFormBase は Ext.TabPanel 設定オプションに追加されます

Extマスターからのヘルプ???

4

2 に答える 2

5

私は、次のような tpl で List コントロールの itemTpl プロパティを使用したテンプレートを使用する必要があることを理解しました。

<textarea id="todos-template" class="x-hidden-display">
            <div id="todo_item_{todo_id}" class="todo_list">
                <input type="checkbox" id="todo_check_{todo_id}" class="todo_checkbox unchecked"/>         <strong>{title}</strong>
            </div>
</textarea>

次のリスナーを追加しました。

itemtap: function(dataview, index, item, event) {
var todo = dataview.getStore().getAt(index).data;
if (eve.getTarget('input#todo_check_'+todo.todo_id)) {
                    Ext.get(item).addCls('selected');
                    ele = Ext.get('todo_check_'+todo.todo_id);

                    //reverse condition as the event is fired before the state is set
                    if(!ele.getAttribute('checked')) {
                        todo.completed_at = Api.formatDate(new Date());
                        ele.replaceCls('unchecked', 'checked');
                    } else {
                        ele.replaceCls('checked', 'unchecked');
                        todo.completed_at = null;
                    }
}

そのため、リスト項目をタップすると、チェックボックスがタップされているかどうかを検出し、それに応じて関連する div CSS クラスを変更します。ラジオでも同じことができるといいのですが。

于 2011-01-31T18:49:49.567 に答える
0

Sencha Touch の場合、アイコンは Pictos というフォントで保存されます。これがキャラクターマップです 。たとえば、これはチェックボックスボタンを作成する方法です(注:リンクにはコールバック関数がありません)。チェックされているかどうかを示すためにフォントの色を変更するだけです。

CSSで:

a {
text-decoration: none;
}
.icon {
 font-family: "Pictos"; 
}

HTML の場合:

<span>
  Item #1 
  <a href="#">
  <span class="icon">3</span>
  </a>
 </span>
于 2014-03-10T19:21:35.647 に答える