我在 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文件中编写的exclude函数) http://plnkr.co/edit/zJnExGHQ9hJznoF4TyZI?p=preview
以上帮助我在我添加的下一个下拉列表中禁用了select选项。
除非进行一些调整,否则上述过滤函数中编写的代码与我的非常相似。
然而,我面临的问题是它不断被反复调用,即使我只是打开包含下拉列表的状态(html页面)。
通过使用console.log(&#34;在exclude function()&#34;)语句中验证了这一点。
另一个问题,据说是由于这个问题,我在下拉列表中添加billItems的顺序随机播放,当页面被保存并再次打开它时。
例如,我在下拉列表中添加了大约5个billItems,从billItem1,billItem2依次说出,直到billItem5。
当我在billItems数组中保留此数据(我有一个保存按钮)时,进入另一个状态,并再次返回到此状态(使用编辑按钮)并检查billItems数组,序列已更改。
我现在可以在数组中按顺序看到像billItem2,billItem1,billItem3,billItem4,billItem5这样的序列。
再次,当我再次完成这一切时,序列再次洗牌。我究竟如何防止这种情况?
我希望结果与我一个接一个地添加下拉列表的顺序相同。
如何实现?
答案 0 :(得分:0)
然而,我面临的问题是它不断被反复调用,即使我只是打开包含下拉列表的状态(html页面)。
在AngularJS中,每个过滤器在每个摘要周期中至少被调用一次。打开下拉菜单会触发摘要周期,因此每次至少调用一次所有过滤器。
当我在billItems数组中保留此数据(我有一个保存按钮)时,进入另一个状态,并再次返回到此状态(使用编辑按钮)并检查billItems数组,序列已更改。
很难说为什么会这样。这很可能不是您的代码的问题,而是返回数据的后端API。例如,除非您向SELECT语句显式添加ORDER BY子句,否则SQL Server不保证结果的顺序。显示的顺序是否与API返回的顺序不同?