2015-12-30 25 views
0

我試圖根據其他問題的答案對ng-repeat內的問題進行條件可見性。如果用戶來自加拿大然後顯示省份,如果用戶來自美國,則顯示州。我目前的嘗試是這樣的ng顯示內:ng-repeat內的條件可見性

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

VIEW

<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> 

回答

4

最好是過濾後的結果不是隱藏。改爲使用過濾器。您需要在填充日期時按日期添加過濾器。

在這裏,您可以應用visibilityCondition過濾器。

像這樣的事情

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

如果我使用的是什麼這個NG-重複建設一個大型問題集?每個問題可能具有不同的可見性依賴關係 –

+1

您可以在不同模型的基礎上添加n個過濾器。 請查看此答案http://stackoverflow.com/a/13216282/3226814瞭解更多信息 –