2015-09-04 76 views
0

我要問我的用戶一系列問題,並記錄他們的反應陣列位置。問題和可能的答案的類型/數量是多種多樣的,所以我試圖以捕獲所有問題類型的方式編寫我的代碼。兩個示例的問題是:獲取與NG重複,NG-模型和複選框

你會喜歡什麼規模的企業? 答案選項:1-10,11-50,51-200,201-500,501-1,000,1,001-5,000,5,001-10,000,10,000+

你更喜歡什麼着裝? 答案選項:休閒,商務休閒,正式

我需要問兩個不同的用戶相同的問題,並比較他們的反應,以確定%匹配。由於答案是不同的,我想匹配所選答案數組中的位置。這樣,我可以在視圖中動態構建答案選項,並對所有問題使用相同的匹配算法。 user1 answerArray [1,3,5]和user2 ansswerArray [2,3,5]答案3匹配所以給出一個觀點。或者,user1 answerArray [false,false,true,true,true]和user2 answerArray [true,true,true,false,false]他們都選擇了答案3,所以給出一個觀點。

我目前的做法是嘗試使用ng-repeat爲每個答案創建一個複選框,但我不知道如何確定選中哪個方框。我嘗試使用索引來獲得重複循環中的位置,但它不起作用,我不知道如何處理將它傳遞給我的提交函數。

form.form-horizontal(ng-submit='answer(not sure what to do with params here)') 
    div.form-group(ng-repeat='answer in questionData.answers') 
     label.col-xs-3 {{answer}}: 
      input(type='checkbox' ng-model='index' ng-change='checked(true, false)') 

我讀過關於合併NG重複和NG-模型的一些其他的答案,我可以讓數組對象的數組,然後設置NG-模型對象屬性。這似乎是不必要的數據轉換。我很樂意聽到其他解決方案。

頁面看起來是這樣的:

<div ng-view="" class="ng-scope"> 
    <div class="ng-binding ng-scope">What size organization do you prefer?</div> 
    <form ng-submit="answer(1,2,3,4,5,6,7,8)" class="form-horizontal ng-pristine ng-valid ng-scope"><!-- ngRepeat: answer in questionData.answers --> 
     <div ng-repeat="answer in questionData.answers" class="form-group ng-scope"> 
      <label class="col-xs-3 ng-binding">1-10: 
       <input type="checkbox" ng-model="$index" ng-change="checked(true, false)" class="ng-pristine ng-untouched ng-valid"></label> 

回答

3

您可以使用$索引來訪問在循環中的當前項目的位置。所以,你可以將模型值answerArray[$index],這樣你會得到的結果

input(type='checkbox' ng-model='answerArray[$index]' ng-change='checked(true, false)') 
+0

如何將結果傳遞到我的提交功能?如果我有類似ng-submit = answers()的東西,我猜參數將是1,2,3 ...如果我使用$ index設置ng-model,但不會將該寄存器作爲字符串表示形式數字而不是由ng-model代表的var?我該如何處理傳遞可變數量的參數? – user137717

+0

@ user137717你能分享生成的html樣本嗎 –

+0

我在我的文章末尾添加了一個編輯。我用了一小段代碼,因爲我使用了ng-view,而且我無法找到一種方法來打印元素選項卡中的輸出。查看頁面源只顯示我的佈局模板。與郵遞員一樣。 – user137717

1

ng-repeat帶有$index的數組。例如:

<li ng-repeat="page in pages"> 
      <a ng-class="{ testClass: $index == pageNumber }" ng-click="setPageNumber($index)">{{ page }}</a> 
</li>