Используя md-select, передайте весь объект элемента ng-repeat, а не только строку

Я создал форму с Angular Material, которая использует раскрывающийся список для выбора из массива book объектов с именами и идентификаторами с конечной целью обмена на другую книгу в моей коллекции. Вот как выглядит мой типичный торговый объект:

var tradeItem = {
  wanted: {
    user: 'barryjohnson',
    bookId: 'foo1bar2'
  },
  offered: {
    user: 'dangraham',
    bookId: 'bar7baz8'
  },
};

Я хочу сохранить весь объект в моем ng-model в моем меню выбора, поэтому я хочу, чтобы ng-repeat ссылался на весь объект массива. Таким образом, я могу сделать простой последующий запрос к моей базе данных.

На данный момент сохраняется только заголовок, который находится внутри моего тега md-option.

Вот мой взгляд:

md-dialog(aria-label='Trade', ng-cloak='')
  form
    md-toolbar
      .md-toolbar-tools
        h2 Propose a Trade
        span(flex='')
    md-dialog-content(style='max-width:800px;max-height:810px; ')
      .md-dialog-content
        p Which of your books would you like to trade for '{{userClickedBook.title}}'?
        p {{selected}}
        md-input-container.md-block
          label(for="mySelect") Your Books
          md-select(name="mySelect", ng-model='selected')
            md-option(ng-repeat="book in usersBooks") {{book.title}}
        div(layout='row')
          md-button(ng-click='cancelDialog()', style='margin-right: 20px;') Cancel
          md-button.md-primary(ng-click='save()', ng-disabled='myForm.$invalid', layout='', layout-align='center end') Ok

Итак, как я могу связать весь объект, чтобы $scope.selected был похож на вышеупомянутый объект tradeItem, а не только на одну строку (содержимое md-option)?


person alanbuchanan    schedule 12.11.2015    source источник


Ответы (1)


Разве это не сработает для вас?

 <md-option ng-repeat="book in userBooks" ng-value="book">
            {{book.title}}
          </md-option>
person mindparse    schedule 12.11.2015
comment
Должно быть, у меня завис мозг, чтобы пропустить атрибут value, спасибо. - person alanbuchanan; 12.11.2015
comment
Вам разрешено, у всех нас они есть время от времени! :) - person mindparse; 12.11.2015
comment
Это передает значение книги в виде строки, а не объекта. Так что вам нужно либо разобрать его после, либо есть другой способ передать его... - person trudesign; 19.04.2016
comment
См. stackoverflow.com/questions/ 35187358/. Используйте ng-value="book" вместо value={{book}}. - person Liron; 10.05.2016
comment
Большое спасибо @Liron, ваш комментарий сэкономил мне много времени при устранении неполадок с некоторыми функциями часов. - person Japheth Ongeri - inkalimeva; 30.05.2016