如何使用深流记录来选择ds列表

时间:2017-02-01 16:05:17

标签: polymer deepstream.io

我在聚合物应用中选择ds列表时遇到问题。我有一个功能正常的聊天标题列表(实现为深度记录),应该用于选择匹配的聊天记录(实现为包含聊天消息作为记录的深层列表)。

   <div class="chatlist">
     <!-- This is the list of chats -->
      <paper-menu selected="[[chatlist]]">
        <paper-item>
          <paper-input label="New Chat:" id="chatName" on-keydown="setChatName"></paper-input>
        </paper-item>
        <template 
        is="dom-repeat" 
        items="[[todos]]" 
        as="recordId">
        <div role="listbox">
          <chat-names
            name="[[recordId]]">
          </chat-names>
        </div>
        </template>
      </paper-menu>
  </div>

  <!-- this is the chat history -->
  <iron-pages
    selected="[[chatlist]]"
    attr-for-selected="chatView"
    fallback-selection="chatView404"
    role="main">    
      <template 
        is="dom-repeat" 
        items="[[todos]]" 
        as="recordId">
          <chat-view
            chatView="[[???]]"
            name="[[recordId]]">
          </chat-view>
      </template>
  </iron-pages>

所以这是我的问题:虽然聊天列表工作正常,但我不知道如何将聊天本身的选择连接到匹配的聊天记录的显示。

聊天标题的创建发生在纸张输入on-keydown="setChatName"功能中,如下所示:

setChatName: function (e) {
    if (e.which === 13) {
      var recordId =  'polymer-example/' + this.ds.getUid();
      var todo = this.$$( '.new-record-input' ).value;
      var todoRecord = this.ds.record.getRecord( recordId );
      var todoList = this.ds.record.getList( this.name );

      todoRecord.set( { name: todo, checked: false } )
      todoRecord.whenReady( function() {
        todoList.addEntry( recordId );
      } );
      this.$.chatName.value = '';
    }
  },

我现在如何设置聊天名称本身的记录,以及包含聊天记录的ds-list?并且:ds-list的哪些属性很有用(例如id?name?)用作选择它的属性?

对不起,很长一段时间的问题,我们非常感谢您的回答!

1 个答案:

答案 0 :(得分:1)

首先,原谅我,但我对你给出的例子感到困惑。 第二个代码段似乎是todo应用的示例代码。如果您使用描述性变量名称,那将会非常有用。

您似乎拥有允许用户创建新聊天名称的代码,其中创建的记录名为'polymer-example/$RANDOM_ID'(我建议使用类似'chat-details/$RANDOM_ID'的内容),并带有值{ name: $CHAT_NAME, checked: false }。 然后将记录'polymer-example/$RANDOM_ID'添加到具有某些聚合物属性的列表中 您有一个深层的名称列表,其中每个名称对应一个包含聊天名称的深层记录。

假设您想存储对当前所选聊天的引用,我建议您将相应的聊天ID(在提供的示例中称为recordId)存储为属性,或者您可以存储对记录本身的引用。

为了存储聊天记录,我建议为每个聊天创建另一个列表(例如,'chat-history/$CHAT_ID')。 然后,对于每条新消息,您可以创建相应的记录('chat-message/$RANDOM_ID')并使用它来存储消息内容,发件人姓名,时间等。现在将消息记录的名称添加到聊天记录列表中

选择正确的聊天记录只是获取当前选定的聊天(chatId),获取包含消息ID列表的列表'chat-history/' + chatId,然后获取记录{{1 }}。