Как использовать глубокие записи для выбора DS-списков

У меня проблема с выбором списков 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, содержащий историю чата? И: Какие атрибуты списка ds полезны (например, id? Name?) Для использования в качестве атрибута для его выбора?

Извините за длинный вопрос, каждый ответ очень ценится!

1 ответ

Решение

Во-первых, прости меня, но я смущен примерами, которые ты привел. Второй фрагмент кода выглядит как пример кода для приложения todo. Это очень помогло бы, если бы вы использовали описательные имена переменных.

Похоже, у вас есть код, который позволяет пользователю создать новое имя чата, где создается запись под названием 'polymer-example/$RANDOM_ID' (Я бы предложил использовать что-то вроде 'chat-details/$RANDOM_ID' вместо) со значением { name: $CHAT_NAME, checked: false }, Запись 'polymer-example/$RANDOM_ID' затем добавляется в список с некоторым свойством полимера. У вас есть глубокий список имен, где каждое имя соответствует глубокой записи, содержащей имя чата.

Предположим, что вы хотите сохранить ссылку на текущий выбранный чат, я предлагаю либо сохранить соответствующий идентификатор чата (это называется recordId в приведенном примере) в качестве свойства, или вместо этого вы можете сохранить ссылку на саму запись.

Для хранения истории чата я бы предложил создать еще один список (например, например, 'chat-history/$CHAT_ID') для каждого чата. Затем для каждого нового сообщения вы можете создать соответствующую запись ('chat-message/$RANDOM_ID') и использовать его для хранения содержимого сообщения, имени отправителя, времени и т. д. Теперь добавьте имя записи сообщения в список истории чата.

Выбор правильной истории чата - это всего лишь случай получения текущего выбранного чата (chatId), получая список 'chat-history/' + chatId который содержит список идентификаторов сообщений, а затем выборку записи 'chat-message/' + messageId,

Другие вопросы по тегам