如何使用 deepstream 记录 select ds-lists

How to use deepstream records to select ds-lists

我的聚合物应用程序中的 selection of ds lists 有问题。我有一个有效的聊天标题列表(作为深度记录实现),应该用于 select 匹配的聊天历史记录(作为包含聊天消息作为记录的深度列表实现)。

   <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>

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

聊天标题的创建发生在 paper-input 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?)可以用作 select 的属性吗?

抱歉问题太长了,非常感谢每一个答案!

首先,请原谅我,我对你给出的例子感到困惑。 第二个代码片段似乎是待办事项应用程序的示例代码。如果您使用描述性变量名称,将会有很大帮助。

您似乎拥有允许用户创建新聊天名称的代码,其中创建了一条名为 '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,然后获取记录'chat-message/' + messageId