【问题标题】:How to Access a ngInit Value from ngRepeat in Scope如何在范围内从 ng 重复访问 ngonInit 值
【发布时间】:2017-08-09 05:21:45
【问题描述】:

在我的infoDisplay(member) 中,我需要访问特定于我从 $scope 中单击的 div 的 ng-init 值并操纵该值。我该怎么做?

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

第一部分有效,它是在我的移动应用程序中打开一个网址。我只需要第二部分,但无法正常工作。

【问题讨论】:

  • 只要通过cardClicked:infoDisplay(memeber, cardClicked)?
  • @opticon 这只会访问你的函数中的 cardClicked 并且不会影响范围变量。

标签: javascript angularjs


【解决方案1】:

我要做的是在项目本身上设置标志:

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

【讨论】:

    猜你喜欢
    • 2016-11-28
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2017-06-01
    • 2015-12-09
    • 1970-01-01
    • 2016-06-23
    • 2022-01-16
    相关资源
    最近更新 更多