【问题标题】:AngularJS change model value before passing to controllerAngularJS 在传递给控制器​​之前更改模型值
【发布时间】:2014-06-19 00:26:37
【问题描述】:

在将模型值传递给控制器​​之前,我需要更改模型值。这是我的代码:

<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" and ng-options="m.name as m.name for m in mc.measures"

你知道如果 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>

我有一个 id 如何发送 measureId 而不是 measure?

【问题讨论】:

    标签: angularjs controller coffeescript


    【解决方案1】:

    你需要在你的表达式中选择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"
    

    从文档中,您需要使用[select value] as [label to show] for [item from array] in [array]

    【讨论】:

    • 是的,如果我写的是 m.id 而不是 m.name,它会将 id 发送到服务器。为什么我写 m.name 因为 ng-model="measure" 是 measureName。你知道 ng-model 值等于 m.name 选择框出现默认值。
    猜你喜欢
    • 2017-05-08
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多