AngularJS在传递给控制器之前更改模型值
在将模型值传递给控制器之前,我需要更改模型值。这是我的密码:AngularJS在传递给控制器之前更改模型值,angularjs,controller,coffeescript,Angularjs,Controller,Coffeescript,在将模型值传递给控制器之前,我需要更改模型值。这是我的密码: <div class="col-sm-8" ng-controller="MeasureCtrl as mc"> <select class="form-control" ng-model="measure" required="" ng-options="m.name as m.name for m in mc.measures"> </select> &
<div class="col-sm-8" ng-controller="MeasureCtrl as mc">
<select class="form-control" ng-model="measure" required=""
ng-options="m.name as m.name for m in mc.measures">
</select>
</div>
它的工作原理如下:
为了显示选择框的默认值(最后一个值),我需要给出
ng model=“measure”和ng options=“m.name作为m.name表示mc.measures中的m”
您知道若measure等于m.name,则它会在选择框中显示measure(kg)。
问题是,当我将数据传递给控制器时,它发送的是“kg”,而不是它的id(例如15)。
在那之后,我想到了另一个想法,以下是我的方法:
<div class="col-sm-8" ng-controller="MeasureCtrl as mc">
<select class="form-control" ng-init="measureId = mc.getMeasureIdByName(measure)" ng-model="measure" required="" name="mc.getMeasureIdByName(measure)"
ng-options="m.name as m.name for m in mc.measures">
</select>
<input type="hidden" ng-model="measureId" name="measureId"/>
{{measureId}}
</div>
{{measureId}}
我有一个id,如何发送measureId而不是measure?您需要在表达式中选择id:
ng-options="m.name as m.name for m in mc.measures"
变成:
ng-options="m.id as m.name for m in mc.measures"
从文档中,您需要使用是的,如果我写的是m.id而不是m.name,它会发送到服务器的id。为什么我要写m.name,因为ng model=“measure”是measureName。您知道ng model值等于m.name selectbox显示默认值。