2015-06-25 100 views
1

我正在努力尋找處理我的情況的邏輯,如下所述。 請看看。我如何選擇多個複選框具有相同的名稱和編號

我有主題表,它有三個主題。每個主題都有唯一的ID。 (ID,姓名)

我(使用<ul>元)3個不同的學生(使用<li>父複選框)顯示在用戶界面爲孩子checkboxe每個主題。

例如

Andy 
    Math 
    English 
    Computer 
John 
    Math 
    English 
    Computer 
Murray 
    Math 
    English 
    Computer 

代碼:

<div> 
    <div> 
     <h5>Students Courses</h5> 
    </div> 
    <ul> 
     <li ng-repeat="student in Students"> 
      <input type="checkbox" class="checkbox" id="{{student[0].Id}}"/> 
      <label for="{{student[0].Id}}"><span class="Radiobox-txt" id="{{student[0].Name}}">{{student[0].Name}}</span></label> 
      <ul> 
       <li ng-repeat="subject in student[0].Subjects"> 
        <input type="checkbox" id="{{subject.Id}}" ng-model="subject.Checked" /> 
        <label for="{{subject.Id}}"><span id="{{subject.Name}}">{{subject.Name}}</span></label> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</div> 

因此,用戶可以選擇每個學生根據主題,可以保存它。 每個科目的ID都是獨一無二的,來自Student表。

問題: 例如,Math受試者具有相同Id並重復不同的學生。所以,當我爲Murray選擇Math主題時,它基本上選擇Math主題在Andy之下,因爲Id是相同的。

有人可以建議我怎麼能以更好的方式處理它?

請注意我不想在不同的學生下面有IdMath否則它會是錯誤的,因爲我是storig select主題Id在我的表中。 因此保存Id必須與subject表的原始Id匹配。

+2

「請注意我不想有不同的數學Id」 - 太糟糕了。 ID **必須**在文檔中是唯一的。 – Quentin

+0

你可以給學生對象 – Rhea

+0

你不應該在學生[0] .Subjects中使用'ng-repeat =「主題 - 它應該只是'ng-repeat ='主題在學生。主題」 - 刪除''[0]' - 如果我爲每個學生保留Math Id不同,並且我爲每個學生選擇Math,並且數學將爲每個學生設置不同的Id,那麼您已經在該學生中循環使用 – Darren

回答

1

您可以在html中重複使用相同名稱的選擇器id,這違背了web標準。你應該使用ng-repeat的$index來使id唯一。

的唯一標識將是內NG重複將{{subject.Id+ $index + $parent.$index}}

標記

<li ng-repeat="student in Students"> 
     <input type="checkbox" class="checkbox" id="{{student[0].Id + $index + $parent.$index}}"/> 
     <label for="{{student[0].Id+ $index + $parent.$index}}"><span class="Radiobox-txt" id="{{student[0].Name}}">{{student[0].Name}}</span></label> 
     <ul> 
      <li ng-repeat="subject in student.Subjects"> 
       <input type="checkbox" id="{{subject.Id+ $index + $parent.$index}}" ng-model="subject.Checked" /> 
       <label for="{{subject.Id+ $index + $parent.$index}}"><span id="{{subject.Name}}">{{subject.Name}}</span></label> 
      </li> 
     </ul> 
    </li> 
+0

我認爲你的回答對我有意義。讓我試一試。 – immirza

+0

添加+ $索引不會使Id有任何不同。我的意思是id =「{{subject.Id + $ index}}」和id =「{{subject。}}「生成相同的ID,因此數學ID在不同的學生下被重複,所以最後出現了相同的問題 – immirza

+0

@immirza看看我的更新..它會工作100% –

0

使用$父遍歷父循環。

<li ng-repeat="student in Students"> 
     <input type="checkbox" class="checkbox" id="{{student.Id}}"/> 
     <label for="{{student.Id}}"><span class="Radiobox-txt" id="{{student[0].Name}}">{{student[0].Name}}</span></label> 
     <ul> 
      <li ng-repeat="subject in student.Subjects"> 
    <input type="checkbox" id="{{subject.Id}}_{{ $parent}}" ng-model="subject.Checked" /> 
       <label for="{{subject.Id}}_{{ $parent}}"><span id="{{subject.Name}}">{{subject.Name}}</span></label> 
      </li> 
     </ul> 
    </li> 
相關問題