【问题标题】:How to dynamically set ng-model to correspond with object property如何动态设置 ng-model 以对应对象属性
【发布时间】:2013-11-15 02:28:12
【问题描述】:

在某个 json 文件中,数组中只会存在一个对象。但是,此对象具有未知数量的属性。

[{"red": 14, "green": 12, "orange": 1, "yellow": 11, "blue": 9}]

这个对象被称为“项目”。这是我的表格:

<div ng-app="myApp" ng-controller="MainCtrl">
<form class="idea item">
    <div ng-repeat="(key, value) in items[0]" >
        <label>{{key}}</label>
        <input type="range" value="{{value}}" min="0" max="15"/>
    </div>
    <input type="submit" ng-click="save()" />
</form>
</div>

但是,当我在表单上点击提交时,发送的数据始终是最初在输入中设置的数据:[{"red": 14, "green": 12, "orange": 1, "yellow": 11, "blue": 9}]

例如,如果我将所有输入设置为 0,我如何让它发送[{"red": 0, "green": 0, "orange": 0, "yellow": 0, "blue": 0}]

save() 函数主要包括:

$http.put(url, $scope.items);

【问题讨论】:

    标签: html json angularjs


    【解决方案1】:

    就像 javascript 中的变量键一样,在 ng-model 中使用 bracket notation 作为 member operator

    <input type="range" ng-model="items[0][key]" min="0" max="15"/>
    

    演示:Fiddle

    【讨论】:

    • 有效,除了items[0][key] 应该只是items[key] 因为ng-repeat 已经指定(key, value) in items[0]
    • @rosciood 使用的是哪个 angularjs 版本?小提琴似乎工作正常
    • 我正在使用 1.1.1,这可能是我的问题,但我很高兴它可以工作。你是对的,你提供的 jsfiddle 工作正常。谢谢!