2

我在 $scope.data 中有一个包含字段“id”、“name”和“age”的项目集合,这些项目正在使用 ng-repeat 指令显示在视图中。对于每组项目,都有一个相应的“编辑按钮”。

我希望能够访问按下编辑按钮的特定项目集的值。

html:

<div ng-controller="Ctrl">
    <div ng-repeat="i in data">
        Name: {{i.name}}
        Age: {{i.age}}

        <form ng-submit="submit()">
            <input type="text" ng-model="i.id"/>
            <input type="submit" value="Edit" />
        </form>
    </div>
</div>

脚本:

function Ctrl($scope) 
{
  $scope.data = [
    {id:1,name:"Alex",age:22},
    {id:2,name:"Sam", age:28}
    ];

    $scope.submit = function() {
        //access id of user for which edit was clicked
    };
}

这样做的正确方法是什么?

4

3 回答 3

6

我建议您只使用一个按钮,而不是一个表单:

<div ng-controller="Ctrl">
    <div ng-repeat="i in data">
        Name: {{i.name}}
        Age: {{i.age}}

        <input type="text" ng-model="i.id"/>
        <button ng-click="submit(i)">Edit</button>

    </div>
</div>

只需发送i到按钮单击事件(如果您需要验证,我想您可以使用表单,但您的示例似乎不需要它)。

然后您的submit功能更改为:

$scope.submit = function(selectedItem) {

    // here you now have access to selected item    
};
于 2013-11-09T21:27:42.943 回答
3

尝试这个:

HTML:

<form ng-submit="submit(i.id)">

JavaScript:

$scope.submit = function(userId) {
  // you have userId
};
于 2013-11-09T21:26:18.507 回答
2

一种选择是只ng-click在一个按钮内使用一个调用您的提交的按钮i

<div ng-controller="Ctrl">
    <div ng-repeat="i in data">
        Name: {{i.name}}
        Age: {{i.age}}

        <button ng-click="submit(i);">edit</button>

    </div>
</div>

和功能:

$scope.submit = function(i) {
    console.log(i);
    //access id of user for which edit was clicked
};

这是一个工作的小提琴:http: //jsfiddle.net/pRAcP/

于 2013-11-09T21:28:02.350 回答