Jimmyt1988
Jimmyt1988

Reputation: 21136

Keeping track of multiple select box items

I have the following:

http://jsfiddle.net/Qgmz7/119/

I am trying to keep track of what is selected and what is not, how do I go about doing this?

<div ng-app>
    <div ng-controller="cCtrl">
        <select multiple ng-model="campaign" ng-options="c.ID as c.Name for c in campaigns">
            <option ng-selected="c.Selected" value="">-- choose campaign --</option>
        </select>
        <ul>
            <li ng-repeat="item in campaigns">{{item.Name}} - {{item.Selected}}</li>
        </ul>
    </div>
</div>

function cCtrl($scope) {    
    $scope.campaigns = [
        {Selected:true, ID: 1, Name:"James"},
        {Selected:false, ID: 2, Name:"James"},
        {Selected:true, ID: 3, Name:"James"},
    ];
}

Upvotes: 0

Views: 199

Answers (1)

Facundo Pedrazzini
Facundo Pedrazzini

Reputation: 1486

Hi try this http://jsfiddle.net/a63k106s/

function cCtrl($scope) {  
    $scope.campaigns = [
        {Selected:true, ID: 4, Name:"James"},
        {Selected:false, ID: 2, Name:"James"},
        {Selected:true, ID: 3, Name:"James"},
    ];

    $scope.$watch('campaign', function (nowSelected) {          
        angular.forEach($scope.campaigns, function(campaign) {
            campaign.Selected = nowSelected.indexOf(campaign.ID) >= 0
        });
    });
}

Upvotes: 1

Related Questions