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


我有一个带有唯一ID的书籍的初始列表,需要列出。最初列出的数据是“书名”和出版日期(ID仅用于生成列表hrefs)。
单击某本书后,它会调用一个函数以获取该书的额外数据以显示。
在单击的书的内部,我还有另一个功能,可以将上述所有数据重复到两个选项卡中(选项卡一个用于显示图书,而选项卡两个用于注释)。


我的问题:
是当我尝试将书ID传递给函数调用时,它尝试遍历我的整个书列表(500k +书),并且没有调用该特定ID,我认为这是由于角度不正确地编写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)"

07-28 07:35