如何将angularjs对象绑定到它们的键和值

时间:2014-05-14 00:05:52

标签: javascript angularjs 2-way-object-databinding

我阅读了一些关于角度模型绑定的文章,只是出于好奇,我想知道是否可以将键绑定到输入,

http://jsfiddle.net/x3azn/jM28y/4/

所以我希望通过输入框更新主arr并实现双向键绑定。

这可能吗?

2 个答案:

答案 0 :(得分:4)

如此处Binding inputs to an array of primitives using ngRepeat => uneditable inputs所述,是的,你可以,但不是那样

试试这个

function ctrl($scope) {
$scope.arr = [{name:'1', lastname: '2'},
              {name:'3', lastname: '4'},
              {name:'5', lastname: '6'}]
}

<div ng-repeat="person in arr">
    <input type="text" ng-model="person.name" />
    <input type="text" ng-model="person.lastname" />
</div>

http://jsfiddle.net/jM28y/5/

答案 1 :(得分:4)

不,不可能将键绑定到输入。

我发现你能做的最接近的事情是滥用ngRepeat的$index属性并将其绑定到输入。您无法更改现有值的键,但可以更改显示的值以及创建新的键值对。我决不建议将其作为一种解决方案,我只想分享在调查这个问题时所产生的hackery。

JSFiddle:http://jsfiddle.net/DanielBank/v6tFG/

JavaScript的:

function ctrl($scope){
    $scope.obj = {
        '0': 'a',
        '1': 'b',
        '2': 'c',
        'George': 'Clooney',
    };
}

HTML:

<div ng-app>
<div ng-controller="ctrl">
    <div ng-repeat="value in obj">
        <input type="text" ng-model="$index"/>
        <input type="text" ng-model="obj[$index]"/>
        <input type="text" ng-model="value"/>
    </div>    
    {{obj}}
</div>
</div>