Javascript 使用id保存多个选择框的值

Javascript 使用id保存多个选择框的值,javascript,angularjs,Javascript,Angularjs,对于在ng repeat中迭代的每个对象,我都有一个或多个选择框。用户应该能够从选择框中选择3个优先级,并通过单击按钮保存它们。在保存功能中,我想访问选择框所属的object.id和choosen值 以下是我当前的代码,以及我在评论中遇到的问题: HTML <div ng-repeat="object in objects"> <div> <md-input-container> <md-select ng

对于在
ng repeat
中迭代的每个对象,我都有一个或多个选择框。用户应该能够从选择框中选择3个优先级,并通过单击按钮保存它们。在保存功能中,我想访问选择框所属的object.id和choosen值

以下是我当前的代码,以及我在评论中遇到的问题:

HTML

<div ng-repeat="object in objects">
    <div>
        <md-input-container>
            <md-select ng-model="selectedPriority" placeholder="Priorität">
                <md-option ng-value="{{ priority.name }}+{{ object.id }}" ng-repeat="priority in priorities">{{ priority.name }}</md-option> <!--setting of ng-value throws an error? How can I do this?-->
            </md-select>
        </md-input-container><br>
        {{ object.id}}
    </div>
</div>
<md-button ng-click="save()">Save</md-button>
@Sajeetharan:对象json的形式如下

JSON

[{  
    "date":"2017-01-21T18:20:00.873Z",
    "duration":120,
    "location":"Test",
    "passed":false,
    "id":"58838763019ac0479455bbc0"
},
{  
    "date":"2017-01-21T15:15:00.420Z",
    "duration":10,
    "location":"Test",
    "passed":false,
    "id":"58839ac9019ac0479455bbc1"
}
//...]

不能这样使用:
ng value=“{{priority.name}}+{{object.id}}”

您必须将它们分开:
ng model=“object.selectedPriority”
ng value=“priority”
。 最后在保存按钮上单击:生成循环以打印每个对象的选定优先级

我假设您的
优先级
数组是一组具有
名称
键的对象。 选中此项:


如果我弄错了,很抱歉:)

幸运的是,您可以将数组传递给
ng model
指令,但这里的技巧是使用适当的索引

您需要按如下方式更改HTML:

<div ng-repeat="object in objects track by $index">
  <div>
    <select ng-model="selectedPriority[$index]">
      <option ng-repeat="priority in priorities" value="{{ priority.name }}+{{ object.id }}">{{priority}}</option>
    </select>
  </div>
</div>

{{priority}}
这里,我们使用的是一个范围变量
selectedPriority
,它被声明为数组

现在,如果您只需单击按钮即可控制台
$scope.selectedPriority
,您将获得一个包含所需值的数组。

请尝试以下操作:

将selectedPriority初始化为空数组:

$scope.selectedPriority = [ ];
使用ng change将更改反映到selectedPriority上,仅在保存功能中访问这些更改

<div ng-repeat="object in objects">
    <div>
        <md-input-container>

            <md-select ng-model="selectedPriority[$index].priority" placeholder="Priorität" ng-change=" selectedPriority[$index].objectId = object.id">
                <md-option ng-value="priority.name" ng-repeat="priority in priorities">{{ priority.name }}</md-option> <!--setting of ng-value throws an error? How can I do this?-->
            </md-select>
        </md-input-container><br>
        {{ object.id}}
    </div>
</div>
<md-button ng-click="save()">Save</md-button>

将对象发布到jsonwhat is priorities array
<div ng-repeat="object in objects">
    <div>
        <md-input-container>

            <md-select ng-model="selectedPriority[$index].priority" placeholder="Priorität" ng-change=" selectedPriority[$index].objectId = object.id">
                <md-option ng-value="priority.name" ng-repeat="priority in priorities">{{ priority.name }}</md-option> <!--setting of ng-value throws an error? How can I do this?-->
            </md-select>
        </md-input-container><br>
        {{ object.id}}
    </div>
</div>
<md-button ng-click="save()">Save</md-button>
$scope.save = function(){
    // use $scope.selectedPriority[neededIndex].objectId ;
    // use $scope.selectedPriority[neededIndex].priority ;
}