2017-03-17 46 views
0

在我的infoDisplay(member)我需要訪問特定於我從$ scope中點擊的div的ng-init值並操作該值。我該怎麼做?如何從範圍內的ngRepeat訪問ngInit值

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

的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]; 
    } 
} 

第一部分的作品,它是在我的手機應用程序打開URL。我只需要第二部分,但不能得到它的工作。

+1

只要通過cardClicked以及:'infoDisplay(memeber,cardClicked)'? – opticon

+0

@opticon只會在函數中訪問cardClick,並且不會影響範圍變量。 –

回答

4

我會做的是設置該標誌上項目本身:

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

然後你就可以存取權限它在你的控制器:

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

如果你認爲你的cardClicked不應該您member項目,只需跟蹤一個數組中的值:

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

然後你可以在你的控制器訪問它:

$scope.infoDisplay = function(member, index) { 
    var cardClicked = $scope.cardsClicked[index]; 
}