2017-03-17 58 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]; 
}