在提交之前更改ng-model

时间:2016-10-10 14:27:49

标签: javascript angularjs

我有一个简单的模型,提交一个来自select的表单我正在使用ng-repeat,如下所示:

 'Ctrl'
 isdom.scheduleOptions = ['Pass', 'N/A'];
 'html'
 <select ng-model="isdom.isdomForm.isDom101">
   <option ng-repeat="option in isdom.scheduleOptions" value="{{option}}">{{option}}</option>
 </select>

构建api end point的人要求采用以下格式的数据:

"outcomes": [
     { "itemNo": "is11", "outcome": "Pass" }
     ,
     { "itemNo": "is12", "outcome": "Pass" }...

当我的模型如此时,我该怎么做?

{
 "isDom11": "N/A",
 "isDOm12": "Pass",...
}

我想过尝试获取模型中以isDom开头的所有元素,并将它们推送到已修改为对象的outcomes数组中,以复制所需的格式。

我可以使用ng-repeat来实现此目的吗?

2 个答案:

答案 0 :(得分:0)

尝试使用angular docs中提供的(key, value)语法。

Key value in ng-repeat

表达式中

(键,值) -  其中key和value可以是任何用户定义的标识符,expression是赋予集合枚举的范围表达式。

For example: (name, age) in {'adam':10, 'amalie':12}.

你的例子,

isdom.scheduleOptions = {
                "isDom11": "N/A",
                "isDOm12": "Pass",...
                }


<select ng-model="isdom.outcomes">
   <option ng-repeat="(itemNo, outcome) in isdom.scheduleOptions" value="{{outcome}}">{{outcome}}</option>
 </select>

答案 1 :(得分:0)

您可以使用ng-options填充select

请参阅:ngOptionsselect

所以它应该是这样的:

$scope.isdom.scheduleOptions = [
     { "itemNo": "is11", "outcome": "N/A" }
     ,
     { "itemNo": "is12", "outcome": "Pass" }
  ];
<select ng-model="isdom.isdomForm.isDom101"
        ng-options="item as item.outcome for item in isdom.scheduleOptions track by item.itemNo"></select>