Angularjs 动态orderBy不使用ng模型

Angularjs 动态orderBy不使用ng模型,angularjs,Angularjs,我无法根据所选值对列表进行排序。 对于这一点,什么是更好的做法 <select ng-model='selected'> <option value="name">Name</option> <option value="score">Score</option> </select> <ul ng-repeat="shop in shops track by $ind

我无法根据所选值对列表进行排序。 对于这一点,什么是更好的做法

<select ng-model='selected'>
            <option value="name">Name</option>
            <option value="score">Score</option>

</select>

<ul ng-repeat="shop in shops track by $index | orderBy: 'data.{{selected}}' ">

            <li class="name">{{shop.data.name}}</li>
            <li class="score">Score: {{shop.data.score}}</li>
            <li><img  ng-src="{{shop.data.img}}"> </li>

</ul>

名称
分数
  • {{shop.data.name}
  • score:{{shop.data.score}

下面的ng重复应该可以做到这一点

<ul ng-repeat="shop in shops | orderBy: selected track by $index  ">

这是我尝试过的一个工作示例

HTML:

<select ng-model="selected"> 
            <option value="name">Name</option>
            <option value="score">Score</option> 
        </select>

        <ul ng-repeat="shop in shops | orderBy:selected">

        <li class="name">{{shop.name}}</li>
        <li class="score">Score: {{shop.score}}</li>

        </ul>
我认为你应该从我们的ng repeat中删除曲目

编辑:

你的重复应该是这样的

<ul ng-repeat="shop in shops | orderBy: selected ">
请参考这个


请参考您的

尝试从
orderBy:'data.{{selected}}
-JS将其解释为字符串值,但您想从控制器中使用对象,正如我所设想的那样,并删除括号和
数据
-所以尝试类似
这是我不工作的js FIDLE,只需要在您的FIDLE中进行两项更改:1)在选定的值中添加
数据。名称
而不是
名称
-对象属性不直接可见;)2) 在filterI更新了fiddle之后放入
track by$index
。请检查它由于某些原因示例对我不起作用,非常感谢您的帮助,我的问题似乎是shops对象中的嵌套对象
<ul ng-repeat="shop in shops | orderBy: selected ">