0

In my infoDisplay(member) I need to access the ng-init value specific to the div that I clicked on from the $scope and manipulate the value. How do I do so?

<div ng-repeat="member in memberData">
    <div class="card" ng-init="cardClicked = 'false'">
        <div ng-click="infoDisplay(member)">
        </div>
    </div>
</div>

The Javascript:

$scope.infoDisplay = function (member) {
    if (settings.useApiInfo == 'false') {
        var url = settings.directoryUrl + member.Id;
        var openUrl = cordova.InAppBrowser.open(url, '_system', 'location = yes');
    }
    else {
        cardClicked = { 'true': 'false', 'false': 'true' }[cardClicked];
    }
}

The first part works, it is to open a url in my mobile app. I just need the second part but can't get it working.

Thomas Juranek
  • 343
  • 2
  • 16

1 Answers1

4

What I would do is set the flag on the item itself:

<div ng-repeat="member in memberData">
    <div class="card" ng-init="member.cardClicked = false">
        <div ng-click="infoDisplay(member)">
        </div>
    </div>
</div>

Then you can acces it in your controller:

$scope.infoDisplay = function(member) {
    var cardClicked = member.cardClicked;
}

If you think that your cardClicked shouldn't be on your member item, just track the values in an array:

<div ng-repeat="member in memberData">
    <div class="card" ng-init="cardsClicked[$index] = false">
        <div ng-click="infoDisplay(member, $index)">
        </div>
    </div>
</div>

Then you can acces it in your controller:

$scope.infoDisplay = function(member, index) {
    var cardClicked = $scope.cardsClicked[index];
}
devqon
  • 13,818
  • 2
  • 30
  • 45