我有一个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 #</th>
<th>PROGRAM</th>
<th>DISC %</th>
<th>REBT %</th>
<th>Award 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指令之外的函数?
答案 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-start
和ng-repeat-end
可能会对您有所帮助:
https://docs.angularjs.org/api/ng/directive/ngRepeat#special-repeat-start-and-end-points
否则你必须找到一个解决方法。 对于每次迭代,调用控制器中的函数并存储该值。然后,您可以从该列表中触发您想要的内容。但实际上这根本没有意义。这与在第一个下面开始新的ng-repeat相同。
但现在的问题是:你只需要一个模态吗? ng-repeat的哪个对象要传递给模态?首先?最后?第二?
在我看来,你想要做的事情并没有多大意义。
我认为在您的情况下ng-repeat-start
和ng-repeat-end
将完成工作