Javascript 如何为ng repeat中的每个ng模型指定唯一标识符?

Javascript 如何为ng repeat中的每个ng模型指定唯一标识符?,javascript,angularjs,Javascript,Angularjs,我有一个包含多个AngularUI滑块的页面,还有一个显示每个滑块值的跨距,其中有一个ng绑定。它看起来像这样: <div class="formitem" ng-repeat="food in foodlist" > <div ui-slider="{range: 'min'}" min="0" max="{{ unit.max }}" ng-model="demoVals.slider" class="food-slider" > <

我有一个包含多个AngularUI滑块的页面,还有一个显示每个滑块值的跨距,其中有一个ng绑定。它看起来像这样:

   <div class="formitem" ng-repeat="food in foodlist" >
     <div ui-slider="{range: 'min'}" min="0" max="{{ unit.max }}" ng-model="demoVals.slider" class="food-slider" >
      <div class="begin">1</div>
      <div class="end"> {{ unit.max }} {{ food.uid }}  </div>
    </div>
    <span ng-bind="demoVals.slider"></span>
   </div>       

如何将food.uid添加到每个食品的ng模型中?

使用单个元素而不是使用数组似乎不是一个好的体系结构选择。您应该尝试切换以将滑块值放入数组中

然而,您可以使用一些控制器功能来实现您想要的功能,尽管它相当难看。在
ng repeat
中,您可以绑定到函数

<div ng-bind="test(food.uid)"></div>

您希望在每次迭代的demoVals中添加一个
food.uid
属性。这就需要在每次迭代中执行js代码。这只能在指令中完成(IMHO)

因此,这里有一个工作模式

下面是修改html的方法(请注意
repeat指令
…指令:)


ng模型不接受表达式,因为它需要映射到范围对象。你尝试过$index吗?不知道如何实现这一点,但是你是否考虑让它们成为数组的元素?创建一个演示,可能是通过指令或滑块回调的其他方式,有些遍历你可以做任何你认为正确的事情,这不是一个好的架构选择。我试图解决一个范围问题,而解决范围问题本身可能会更好。但这被认为是正确的,因为它向我展示了我是如何解决这个问题的。这是我最新的问题:
<div ng-bind="test(food.uid)"></div>
$scope.test = function test(v) {
        var t = $scope.$eval("demoVals.slider" + v);
        return t;
      };
 <div class="formitem" ng-repeat="food in foodlist" repeat-directive>
 <div ui-slider="{range: 'min'}" min="0" max="{{ unit.max }}" ng-model="demoVals.slider" class="food-slider" >
  <div class="begin">1</div>
  <div class="end"> {{ unit.max }} {{ food.uid }}  </div>
</div>
<span ng-bind="demoVals.slider"></span>
var app = angular.module('plunker', [])
             .directive ('repeatDirective',function () {
                                           return {
                                              restrict: 'A',
                                              link: function (scope, element, attr) {
                                                console.log('linking directive ',scope.demoVals)
                                                 if (scope.food){
                                                   // you have a value for food
                                                   // you can add it as an attribute to demoVals
                                                   scope.demoVals['prop'+scope.food.uid] = scope.food.name;
                                                 }}
                                           }
                                          });