将ng-repeat当前对象传递到循环外部

时间:2017-05-25 17:14:11

标签: javascript html angularjs html5

我有一个ng-repeat,它在一个更大的div中创建一个行列表。因为我不希望我的按钮在数据输入时重复,所以我在它外面有一个按钮。

            <div class="modal-content">
                <div class="modal-body">
                    <table class="table table-bordered">
                        <thead data-ng-if="contracts.length!=0">
                            <tr>
                                <th>CONTRACT&nbsp;#</th>
                                <th>PROGRAM</th>
                                <th>DISC&nbsp;%</th>
                                <th>REBT&nbsp;%</th>
                                <th>Award&nbsp;Type</th>
                            </tr>
                        </thead>
                        <tbody data-ng-repeat="(contractIndex, contract) in contracts">
                            <tr>
                                <td>
                                    <input bind-once class="form-control input-sm" data-ng-model="contract.CONTRACT_NUM_VAL" />
                                </td>
                                <td><input bind-once type="text" ng-disabled="true" class="form-control input-sm" data-ng-model="contract.GM_PROGRAM" /></td>
                                <td><input bind-once type="number" class="form-control input-sm" data-ng-model="contract.DISCOUNT_PCT" /></td>
                                <td><input bind-once type="number" class="form-control input-sm" data-ng-model="contract.REBATE_PCT" /></td>
                                <td><input bind-once type="text" class="form-control input-sm" maxlength="1" data-ng-model="contract.AWARD_TYPE" /></td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal" data-ng-click="addUpdatedContract(contract)">Add</button>
                </div>
            </div>

我想将当前合约对象传递给我的函数addUpdatedContract(contract);但是因为它超出了数据-ng-repeat的范围,所以我得到了null。

如何将当前合约传递给ng-bind指令之外的函数?

2 个答案:

答案 0 :(得分:1)

因为你总是可以使用一个对象:contracts [0]

<div class="modal-footer">
     <button type="button" class="btn btn-default" data-dismiss="modal" data-ng-click="addUpdatedContract(contracts[0])">Add</button>
</div>

答案 1 :(得分:1)

简单地说:你做不到。

使用ng-repeat-startng-repeat-end可能会对您有所帮助:

https://docs.angularjs.org/api/ng/directive/ngRepeat#special-repeat-start-and-end-points

否则你必须找到一个解决方法。 对于每次迭代,调用控制器中的函数并存储该值。然后,您可以从该列表中触发您想要的内容。但实际上这根本没有意义。这与在第一个下面开始新的ng-repeat相同。

但现在的问题是:你只需要一个模态吗? ng-repeat的哪个对象要传递给模态?首先?最后?第二? 在我看来,你想要做的事情并没有多大意义。 我认为在您的情况下ng-repeat-startng-repeat-end将完成工作