javascript - AngularJS 将字符串从 ng-repeat 列表传递到前端函数

标签 javascript jquery angularjs twitter-bootstrap list

我有一个包含数百到数千本书的项目,我正在使用 Java Rest 后端来查询数据库(也使用 Bootstrap ):

  • 我有一个带有唯一 ID 的图书初始列表,我需要列出该列表。最初列出的数据是图书标题和发布日期(ID 仅用于生成列表 href)。
  • 当点击一本书时,它会调用一个函数来获取该书的额外数据以进行显示。
  • 在点击的图书内部,我有另一个功能,可以将上述所有数据重复到两个选项卡中(选项卡一用于图书放映,选项卡二用于评论)。

我的问题: 当我尝试将图书 ID 传递到函数调用时,它会尝试迭代我的整个图书列表(500k + 图书),并且不会调用该特定 ID,我认为这是由于 Angular 未正确写出 HTML 并刷新造成的list.bookId

我尝试ng-click="getExtraBookInfo({{list.bookId}})"创建:

ng-click="getExtraBookInfo(34234234-34234234)"

但无法正确传递,因为后端需要这种格式:

ng-click="getExtraBookInfo('34234234-34234234')"

所以为了做到这一点,我需要在前端执行此操作:

ng-click="getExtraBookInfo('{{list.bookId}}')"

这在上面的函数调用中工作正常,但是转发器列表永远不会在选项卡中进一步写出 html。

当我调试代码时,即使在 getExtraBookInfo() 调用中,它也会将 {{list.bookId}} 作为 Id 传递!

注意:在 services.js 中,我使用 http.get,并将 bookId 附加到 URL。

总体代码:

<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
  <div class="panel panel-default" ng-repeat="list in bookList" ng-controller="BookListController">
    <div class="panel-heading" role="tab" id="heading_{{list.bookId}}">
      <h4 class="panel-title">
        <a role="button" data-toggle="collapse" data-parent="#accordion" href="#panel_{{list.bookId}}" aria-expanded="true" aria-controls="panel_{{list.bookId}}" ng-click="getExtraBookInfo({{list.bookId}})">
          {{list.bookTitle}} - {{list.bookDate}}
        </a>
      </h4>
    </div>
    <div id="panel_{{list.bookId}}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading_{{list.bookId}}">
      <div class="panel-body">
        <ul class="nav nav-tabs">
          <ul class="nav nav-tabs">
            <li role="presentation" class="active"><a href="#showings_{{list.bookId}}" aria-controls="showings" role="tab" data-toggle="tab">Showings</a>
            </li>
            <li role="presentation"><a href="#comments_{{list.bookId}}" aria-controls="comments" role="tab" data-toggle="tab">Comments</a>
            </li>
          </ul>

          <div class="tab-content">
            <div role="tabpanel" class="tab-pane fade in active" id="showings_{{list.bookId}}">
              <table class="table">
                <thead>
                  <th>Showing</th>
                  <th>Location</th>
                </thead>
                <tbody>
                  <tr ng-repeat="book in getBookDataById({{list.bookId}})">
                    <td>{{book.showingName}}</td>
                    <td>{{book.showingLocation}}</td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>


      </div>
    </div>
  </div>
</div>

最佳答案

这样做就可以了,作为参数传递时不需要使用表达式

ng-click="getExtraBookInfo(list.bookId)"

关于javascript - AngularJS 将字符串从 ng-repeat 列表传递到前端函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40407180/

相关文章:

c# - 如何关闭当前浏览器窗口并重定向到同一浏览器先前打开的窗口

javascript - 左侧的输入取决于 div

angularjs - AngularJS 移动卡片中的拖放指令

javascript - 如何在 AngularJS 中使用 ng-model 双向绑定(bind)函数?

javascript - angularjs数组拼接到另一个元素

PHP/javascript 实时聊天使用过多带宽

javascript - AJAX - 向用户显示连接的当前状态

php - 通过 jquery ajax 传递一个 php 数组

javascript - 无法在 Sylius/Symfony 2 模式框中添加换行符

javascript - 如何在 forEach 函数上执行异步等待