Javascript 数据ng重复和<;选项>;标签
我不熟悉Javascript 数据ng重复和<;选项>;标签,javascript,html,angularjs,Javascript,Html,Angularjs,我不熟悉AngularJS,我不知道如何生成我的列表 我想要的输出像这把小提琴 我当前的代码如下所示 <select data-ng-model="rateFilter" data-ng-change="filterStuff()"> <option selected="selected" value="">Show lowest rating</option> <option value="{{rate}}" data-ng-repea
AngularJS
,我不知道如何生成我的列表
我想要的输出像这把小提琴
我当前的代码如下所示
<select data-ng-model="rateFilter" data-ng-change="filterStuff()">
<option selected="selected" value="">Show lowest rating</option>
<option value="{{rate}}" data-ng-repeat="rate in ratings">{{rate}}</option>
<option value="{{rate}}+" data-ng-repeat="rate in ratings">{{rate}}+</option>
</select>
显示最低等级
{{rate}}
{{rate}}+
ratings变量类似于此[1 2 3]
,无法更改。如何在不更改评级变量的情况下实现这一点?您应该使用ngOptions指令来管理您的选择选项。有时这有点棘手,但你应该始终尝试以角度的方式进行。你可以看看它是如何工作的。这一部分很重要:
for array data sources:
label for value in array
select as label for value in array
label group by group for value in array
select as label group by group for value in array track by trackexpr
for object data sources:
label for (key , value) in object
select as label for (key , value) in object
label group by group for (key, value) in object
select as label group by group for (key, value) in object
您必须使用可能的分级定义数组或对象,然后您的代码可以如下所示:
<select ng-model="ratings" ng-options="label for value in possible_ratings">
</select>
您实际上需要在select
标签上使用ng options
属性。Angular使用所谓的“指令”劫持所有select
标记,并使用ng options
属性中的表达式为select生成选项
标记。您的表情如下所示:
<select data-ng-model="rateFilter" data-ng-change="filterStuff()"
data-ng-options="rate for rate in ratings"></select>
假设评级为百分比。如果数组中实际包含对象,例如括号
字段,您甚至可以使用
rate.percent as rate.percent+'%' group by rate.bracket for rate in ratings
有关select
指令和ng options
属性的更多信息,请参阅
基本上你在引擎盖下看到的是
for (i in ratings) {
rate = ratings[i];
// insert <option value="{{rate.percent}}">{{rate.percent}}%</option>
}
for(评级中的i){
比率=评级[i];
//插入{rate.percent}}%
}
通过分组
根据rate.bracket
的值将评级分解为单独的数组,然后在
标记中为每个数组添加选项。我认为最好将组合的操纵列表放在一个不同的数组中,并将其用于ng repeat。对你来说可能吗?你的评分仍然完好无损:)@Kop4Lyf这会起作用,但我必须尽可能降低我的内存使用率,所以这不是最佳的。它不会对内存造成太大影响。同时,我也找不到一种方法来用其他的方法按小提琴演奏。只能将选项列为1,2,3,4,1+,2+。。。让我知道你是否能做到。标签
不会被定义,ng模型会覆盖他的选项列表。在数字数组中,唯一可用的标签是value
,除非您使用的是指令范围之外的常量标签。他还想继续将所选选项的值
存储到选项数组之外的其他位置,因此ng model
应保持设置为rateFilter
。谢谢,但这并不能满足我的要求。如果你看我的小提琴,我希望列表中包含1,1+,2,2+等,而不仅仅是1,2,3。在这种情况下,我以前的解决方案工作得很好。这里最重要的是,我想在“1”之后加上“1+”,而不是在“3”之后。在不修改我的评分列表的情况下,这是可能的吗?
for (i in ratings) {
rate = ratings[i];
// insert <option value="{{rate.percent}}">{{rate.percent}}%</option>
}