0

Sencha Touch 2 を使用しています。store.filter を使用している間、すべての te レコードがフィルタリングされます。

基本的に私はトピックのリストを持っています。特定のトピックをクリックすると、その特定のトピックのコメントのリストが表示されます。2店舗利用しています。トピックとトピック ID を格納するもの。コメントトピック、コメント、トピックID、およびコメントIDを格納するその他。したがって、特定のトピックを公開するときは、そのトピック ID を使用してコメント ストアをフィルタリングします。

// これがメイン トピック リスト ビューです

Ext.define("ForumApp.view.ForumList", {
extend: "Ext.navigation.View",
requires:["Ext.dataview.List", "Ext.Toolbar", "Ext.field.Text", "Ext.field.TextArea"],
xtype: "forumlistview",

config: {
    items: [{
        xtype: "toolbar",
        title: "Forum",
        docked: "top",
        items: [
                {
                    xtype: "button",
                    ui: "back",
                    action:'backButton',
                    text: "Logout"
                },
            { xtype: 'spacer' },
            {
                xtype: "button",
                text: 'New',
                ui: 'action',
                itemId: "newButton"
            }
        ]
    }, {
        xtype: "list",
        title:"welcome",
        store: "ForumStore",
        itemId:"notesList",
        loadingText: "Loading Notes...",
        emptyText: "<div class=\"notes-list-empty-text\">No notes found.</div>",
        onItemDisclosure: true,
        grouped: true,
        itemTpl: "<div class=\"list-item-title\">{title}</div>"       
    }],
    listeners: [{
        delegate: "#newButton",
        event: "tap",
        fn: "onNewButtonTap"
    }, {
        delegate: "#notesList",
        event: "disclose",
        fn: "onNotesListDisclose"
    }]
},    
onNewButtonTap: function () {
    console.log("newTopicCommand");
    this.fireEvent("newTopicCommand", this);
},
onNotesListDisclose: function (list, record, target, index, evt, options) {
    console.log("topicViewCommand");
    this.fireEvent('topicViewCommand', this, record);
  }
});

//これは私のコメント リスト ビューです

  Ext.define("ForumApp.view.TopicComment", {
 extend: "Ext.Container",
 requires: "Ext.form.FieldSet",
 alias: "widget.topiccommentview",
 config: {
    scrollable: 'vertical',
    fullscreen: true,
    layout: "vbox",
    tpl: "  Topic started by '{username}' :{narrative}",

    items: [
        {
            xtype: "list",
            itemId: "commentlist",
            itemTpl: "{title} : {username} : {narrative}",
            store: "CommentStore",
            flex: 1,
        },
        {
                    docked: "bottom",
                    xtype: "button",
                    action:'comButton',
                    ui: "confirm",
                    text: "Comment",
        }
    ]
 }
 });

//これは私のコントローラです

 Ext.define("ForumApp.controller.ForumController", {

extend: "Ext.app.Controller",
config: {
    refs: {
        forumListView: "forumlistview",
        commentList: "#commentlist"
    },
    control: {
        forumListView: {
            topicViewCommand: "onTopicViewCommand"
        }
        }
},

onTopicViewCommand: function (list, record) {

    this.getCommentList().getStore().clearFilter();
    this.getCommentList().getStore().filter([{property:'id',value: record.data.id}]);

    this.getForumListView().push({
    xtype: 'topiccommentview',
    title: record.titleName(),
    data: record.data
    });
},

// Base Class functions.
launch: function () {
    this.callParent(arguments);
    var forumStore = Ext.getStore("ForumStore");
    forumStore.load();
    var commentStore = Ext.getStore("CommentStore");
    commentStore.load();
    var userStore = Ext.getStore("UserStore");
    userStore.load();
},
init: function () {
    this.callParent(arguments);
}
 });

//これは私のコメントモデルです

  Ext.define("ForumApp.model.CommentModel", {
extend: "Ext.data.Model",
config: {
    idProperty: 'commentId',
    fields: [
        { name: 'commentId', type: 'int' },
        { name: 'id', type: 'int' },
        { name: 'dateCreated', type: 'date', dateFormat: 'c' },
        { name: 'title', type: 'string' },
        { name: 'username', type: 'string' },
        { name: 'narrative', type: 'string' }
    ],
    validations: [
        { type: 'presence', field: 'id' },
        { type: 'presence', field: 'commentId' },
        { type: 'presence', field: 'dateCreated' },
        { type: 'presence', field: 'title', message: 'Please enter a title for this note.' }
    ]
},
titleName: function(){
    var d=this.data,
    names=[
        d.title
        ];
        return names;
}
  });

//これは私のコメント ストアです

  Ext.define("ForumApp.store.CommentStore", {
extend: "Ext.data.Store",
requires: "Ext.data.proxy.LocalStorage",
config: {
    model: "ForumApp.model.CommentModel",
    proxy: {
        type: 'localstorage',
        id: 'comment-store-2'
    },
    sorters: [{ property: 'dateCreated', direction: 'DESC'}],
    grouper: {
        sortProperty: "dateCreated",
        direction: "DESC",
        groupFn: function (record) {

            if (record && record.data.dateCreated) {
                return record.data.dateCreated.toDateString();
            } else {
                return '';
            }
        }
    }
   }
 });
4

0 に答える 0