【问题标题】:Conditional visibility within ng-repeatng-repeat 中的条件可见性
【发布时间】:2015-12-30 17:41:26
【问题描述】:

我正在尝试根据其他问题的答案对 ng-repeat 中的问题进行有条件的可见性。如果用户来自加拿大,则显示省份,如果用户来自美国,则显示州。我目前的尝试在 ng-show 中是这样的:

survey[question.otherquestionToTest - 1].answer == question.testedCondition

我试图用描述性的术语来写它来解释我想要做什么。我仍然熟悉 Angular,我不确定是否有更好的方法来完成这项工作。如果这似乎是处理此问题的低效方式,任何人都可以提出任何其他替代方案。

以下是我的控制器和 html 的示例。

控制器

angular.module('myApp')
.controller('UserInfoCtrl', function ($scope) {

$scope.userInfo = {
    userSurvey: [
        { // Question 8
            question: 'What country do you live in?',
            answer: '',
            options: [
                'Canada',
                'USA'
            ]
        },{ // Question 9
            visibilityDependentOnQuestion: 8,
            visibilityCondition: 'Canada',
            question: 'What province do you live in?',
            answer: '',
            options: [
                'Alberta',
                'British Columbia',
                'Manitoba',
                'New Brunswick'
            ]
        },{ // Question 10
            visibilityDependentOnQuestion: 8,
            visibilityCondition: 'USA',
            question: 'What state do you live in?',
            answer: '',
            options: [
                'Alabama',
                'Alaska',
                'Arizona',
                'Arkansas'
            ]
        }
    ]
};
});

查看

<form class="form-horizontal">
    <div class="form-group ng-hide" 
         ng-repeat="(key, userInquery) in userInfo.userSurvey as survey" 
         ng-show="survey[userInquery.visibilityDependentOnQuestion - 1].answer == userInquery.visibilityCondition">
        <label class="col-sm-4 control-label text-right">{{userInquery.question}}</label>
        <div class="col-sm-4">
            <select class="form-control" ng-model="userInquery.answer">
                <option ng-repeat="option in userInquery.options">{{option}}</option>
            </select>
        </div>
    </div>
</form>

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

    过滤结果比隐藏结果更好。请改用过滤器。您需要在填充时按日期添加过滤器。

    在这里,您可以按 visibilityCondition 应用过滤器。

    类似的东西

    <div ng-repeat="(key, userInquery) in userInfo.userSurvey as survey | filter:USA"></div>
    

    【讨论】:

    • 如果我使用这个 ng-repeat 来构建一个大型问题集怎么办?每个问题可能有不同的可见性依赖关系
    • 您可以根据不同的型号添加n个过滤器。请查看此答案stackoverflow.com/a/13216282/3226814 了解更多信息
    猜你喜欢
    • 2016-12-29
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多