使用md-select,传递ng-repeat项的整个对象,而不仅仅是字符串

ala*_*nan 2 angularjs drop-down-menu angular-ngmodel angular-material pug

我使用Angular Material创建了一个表单,该表单使用下拉列表从book具有名称和ID 的对象数组中进行选择,最终目的是将其交换到我的集合中的另一本书.这是我的典型交易对象的样子:

var tradeItem = {
  wanted: {
    user: 'barryjohnson',
    bookId: 'foo1bar2'
  },
  offered: {
    user: 'dangraham',
    bookId: 'bar7baz8'
  },
};
Run Code Online (Sandbox Code Playgroud)

我想将整个对象保存到我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
Run Code Online (Sandbox Code Playgroud)

那么,我如何绑定整个对象,这$scope.selected就像上面的对象tradeItem,而不只是一个字符串(内容md-option)?

min*_*rse 8

这不适合你吗?

 <md-option ng-repeat="book in userBooks" ng-value="book">
            {{book.title}}
          </md-option>
Run Code Online (Sandbox Code Playgroud)

  • 这会将book值作为String传递,而不是对象.所以你要么必须在之后解析它,要么还有另一种方式来传递它... (7认同)
  • 请参阅http://stackoverflow.com/questions/35187358/change-selected-item-in-md-select-programatically.使用`ng-value ="book"`而不是`value = {{book}}`. (7认同)