4

我想做的是从 ng-repeat 中更新输入字段。我对每个用户的 ng-repeat 内的按钮进行了 ng-click。单击按钮时,它应该更新在 ng-repeat 之外但在同一控制器中的输入字段的值。我刚刚开始使用 Angularjs,我似乎在这里遗漏了一些简单的东西,但就是想不通。任何帮助是极大的赞赏!

<div ng-app="MyApp">
    <div ng-controller="Main">
        <form name="myForm">
            <input type="email" ng-model="rootFolders">
            <button type="submit">Submit</button>
        </form> 
        <span ng-repeat="user in users" style="float:left">
            {{user.name}}<br>
            <button ng-click="rootFolders='{{user.login}}'">Load Email</button>
        </span>

    </div>
</div>

控制器

angular.module('MyApp', []);

function Main($scope) {
    $scope.rootFolders = 'bob@go.com';
    $scope.users = [
            {id:0,name:'user1',login:'user1@go.com',password:'123456'},
            {id:1,name:'user2',login:'user2@go.com',password:'123456'},
                    ]
}

这是小提琴:http: //jsfiddle.net/DahDC/

4

2 回答 2

10

您需要在范围内创建一个 ng-click 操作并传入当前行的用户。

<div ng-app="MyApp">
    <div ng-controller="Main">
        <form name="myForm">
            <input type="email" ng-model="rootFolders">
            <button type="submit">Submit</button>
        </form> <span ng-repeat="user in users" style="float:left">
            {{user.name}}<br>
            <button ng-click="loadEmail(user);">Load Email</button>
        </span>
    </div>
</div>

angular.module('MyApp', []);

function Main($scope) {
    $scope.rootFolders = 'bob@go.com';
    $scope.users = [{
        id: 0,
        name: 'user1',
        login: 'user1@go.com',
        password: '123456'
    }, {
        id: 1,
        name: 'user2',
        login: 'user2@go.com',
        password: '123456'
    }, ]

    $scope.loadEmail = function (user) {
        $scope.rootFolders = user.login;
    }
}

试试看。小提琴

于 2013-07-26T21:42:04.787 回答
1

我相信,因为您是在 ng-repeat 内的 ng-click 内进行分配,所以它是在本地范围内分配 rootFolders 属性(由 ng-repeat 为每个元素实例化的属性)。因此,您实际上在 ng-repeat 的所有本地范围内分配了一个新属性。

我已经编辑了您的小提琴以明确显示这一点。一个很好的学习点!

<div ng-app="MyApp">
<div ng-controller="Main">
    <form name="myForm">
        <input type="email" ng-model="rootFolders"> {{ rootFolders }}
        <button type="submit">Submit</button>
    </form> 
    <span ng-repeat="user in users" style="float:left">
        {{user.name}}<br>
        <button ng-click="rootFolders = user.login">Load Email {{ user.login }}</button><br/>
        {{ rootFolders }}
    </span>

</div>

于 2013-07-26T21:56:30.540 回答