Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数据ng重复和<;选项>;标签_Javascript_Html_Angularjs - Fatal编程技术网

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>
}