What I am trying to do is update an input field from within an ng-repeat. I have an ng-click on the button inside the ng-repeat for each user. When clicking on the button it should update the value of the input field which is outside the ng-repeat but in the same controller. I have just started using Angularjs and I seem to be missing something simple here, but just can't figure it out. Any help is greatly appreciated!
<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>
Controller
angular.module('MyApp', []);
function Main($scope) {
    $scope.rootFolders = '[email protected]';
    $scope.users = [
            {id:0,name:'user1',login:'[email protected]',password:'123456'},
            {id:1,name:'user2',login:'[email protected]',password:'123456'},
                    ]
}
Here is the fiddle: http://jsfiddle.net/DahDC/
You need to create a ng-click action in scope and pass in the user for current row.
<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 = '[email protected]';
    $scope.users = [{
        id: 0,
        name: 'user1',
        login: '[email protected]',
        password: '123456'
    }, {
        id: 1,
        name: 'user2',
        login: '[email protected]',
        password: '123456'
    }, ]
    $scope.loadEmail = function (user) {
        $scope.rootFolders = user.login;
    }
}
Try it. FIDDLE
I believe that because you are making the assignment inside ng-click inside ng-repeat, it is assigning the rootFolders property on the local scope there (the one instantiated by ng-repeat for each element). So your actually assigning a new property on all the local scopes of ng-repeat.
I've edited your fiddle to explicitly show this. A good learning point!
<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>
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With