通过单击tr进行角度编辑

时间:2016-04-05 13:48:33

标签: javascript jquery angularjs firebase angularfire

我正在使用Angular + Firebase + AngularFire来创建我自己的应用。我有一张书桌,我可以添加新书,现在我想实施'编辑'动作:

  1. 我点击了这行。
  2. 我被重定向到'编辑'形式。
  3. 所有数据必须来自我点击的表格行。
  4. 问题在于第三部分,我不知道如何从点击的行中获取所有数据。

    以下是<tr>的HTML文章:

    <tr ng-click="bookCtrl.editBook(bookCtrl.book)" ng-repeat="book in bookCtrl.books">
        <td>{{ book.name }}</td>
        <td>{{ book.author }}</td>
        <td>{{ book.price }}</td>
        <td>{{ book.pubdate | date }}</td>
        <td>{{ book.coverUrl }}</td>
        <td>{{ book.pagesCount}}</td>
    </tr>
    

    我想我应该使用angular.element(event.currentTarget)或类似的东西,但这只是猜测。 DOM大师,请发给我:)

5 个答案:

答案 0 :(得分:1)

更改此

<tr ng-click="bookCtrl.editBook(bookCtrl.book)" ng-repeat="book in bookCtrl.books">

<tr ng-click="bookCtrl.editBook(book)" ng-repeat="book in bookCtrl.books">

Similiar example at JSFiddle

答案 1 :(得分:1)

您缺少在函数中确定正确的对象

 <tr  ng-repeat="book in bookCtrl.books" ng-click="bookCtrl.editBook(book)">
<td>{{ book.name }}</td>
<td>{{ book.author }}</td>
<td>{{ book.price }}</td>
<td>{{ book.pubdate | date }}</td>
<td>{{ book.coverUrl }}</td>
<td>{{ book.pagesCount}}</td>
</tr>

希望您可以从中访问数据。

答案 2 :(得分:0)

使用角度网格库http://ui-grid.info。 这是一篇很好的文章,http://brianhann.com/create-a-modal-row-editor-for-ui-grid-in-minutes

import os

init = str('00001')
path = os.getcwd()

newpath = path + '/' + init
os.chdir(newpath)
print os.getcwd()
... # read and append data

# the next step would be to go to directory 00002. Then read and append data
# I will do the same thing in each directory

答案 3 :(得分:0)

你可以使用ng-repeat的$ index属性,所以

ng-click="bookCtrl.editBook(bookCtrl.books[$index])" ng-repeat="book in bookCtrl.books track by $index">

答案 4 :(得分:0)

这取决于您使用的网格库。我喜欢使用的一个基于角度的网格库是trNgGrid。我还使用了另一个带有trNgGrid的库ngDialog来实现您想要执行的类似操作:弹出一个对话框来编辑所单击行的详细信息。

trNgGrid有一些特殊的范围变量gridItemgridDisplayItem。从文档引用:

  

可以通过

进入当前绑定的行项目      

gridItem范围变量,指向实际数据项,以及
  gridDisplayItem,指向格式化的项目,应该只是   用于演示目的。

详细信息可以阅读here