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

标签 angularjs drop-down-menu pug angular-material angular-ngmodel

我用 Angular Material 制作了一个表单,它使用一个下拉列表从一组 book 对象中进行选择,带有名称和 ID,最终目的是用它换取我收藏中的另一本书.这是我的典型贸易对象的样子:

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

那么,我怎样才能绑定(bind)整个对象,让 $scope.selected 就像上面的对象 tradeItem 一样,而不仅仅是一个字符串(内容md-option)?

最佳答案

这不适合你吗?

 <md-option ng-repeat="book in userBooks" ng-value="book">
            {{book.title}}
          </md-option>

关于angularjs - 使用 md-select,传递 ng-repeat 项目的整个对象,而不仅仅是一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33663906/

相关文章:

angularjs - 为什么插值在 ng-show 中起作用而不是在 ng-click 中起作用

javascript - 通过 Controller 控制 Angular ng-show

javascript - 如何触发 'dropdown list' 的下拉操作?

drop-down-menu - Flutter DropdownButton 颜色与父 Widgets 相同

node.js - Node - 如何运行 app.js?

javascript - Jade 不渲染外部 JSON

AngularJs 通过 URL 获取路由

javascript - 'controller' 的 AngularJS 代码无法启动

html - 当容器设置为溢出隐藏时,是否可以看到超出容器尺寸的内容?

node.js - ExpressJS、Nodester、模板渲染路径?