【发布时间】:2023-03-26 17:41:01
【问题描述】:
我在 ng-repeat 中有一个下拉菜单,它在 ng-model 中存储项目的 id
<tr ng-repeat="bill in billItems track by $index">
而且,我的 ng-options 中有一个过滤器,它遍历如下列表:-
<td>
<select ng-model="bill.itemId" ng-required="true"
ng-options="item.itemId as item.itemName for item in itemRates |
exclude: bill.itemId: billItems">
<option value="">Select Here</option>
</select>
</td>
还有一个添加按钮,它在下面添加相同的下拉菜单,但不显示在上面的下拉菜单中已经为下一个选择的选项。 在某种程度上,与这个小提琴非常相似。 (另见app.js文件中写的排除函数) http://plnkr.co/edit/zJnExGHQ9hJznoF4TyZI?p=preview
以上帮助我在我添加的下一个下拉列表中禁用选择选项。
除了一些调整之外,上面过滤器函数中编写的代码与我的非常相似。
但是,我面临的问题是它不断被重复调用,即使我只是打开包含下拉列表的状态(html 页面)。
已通过使用 console.log("In exclude function()") 语句验证了这一点。
另一个问题,据推测是由于这个原因,当页面被保存并再次打开它时,我在下拉列表中添加 billItems 的顺序随机打乱。
例如,我在下拉列表中添加了大约 5 个 billItem,例如从 billItem1、billItem2 等到 billItem5 的顺序。
当我将这些数据(我有一个保存按钮)保存在 billItems 数组中时,进入不同的状态,然后再次返回此状态(使用编辑按钮)并检查 billItems 数组,顺序已更改。
我现在可以在数组中看到类似 billItem2、billItem1、billItem3、billItem4、billItem5 的顺序。
再一次,当我再次做这整件事时,序列再次洗牌。我该如何防止这种情况发生?
我希望结果与我一个接一个添加下拉列表的顺序相同。
如何实现?
【问题讨论】:
标签: angularjs angularjs-filter angularjs-ng-options