【发布时间】: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