0

我有一個動態生成的表。每行包含一個select(又名下拉菜單)和一個checkbox在用ngRepeat創建的動態表中引用DOM元素

select的變化,我想另外更改屬性爲checkbox,但我不能確定如何從ng-change函數引用checkbox

這裏是一個動態的HTML表:

</table> 
<tr ng-repeat = "(index, item) in items"> 
    <td > 
     <select ng-model="item.myDropDown" ng-change="dropDownChange()"> 
      <option value="A"> A </option> 
      <option value="B"> B </option> 
     </select> 
    </td> 
    <td> 
     <input type="checkbox" ng-model="item.myCheckbox" value="unchecked" disabled='disabled'/> 
    </td> 
</tr> 
</table> 

現在,我嘗試使用引用上改變這些元素:

myApp.controller('myController', function($scope) { 
     $scope.dropdownChange = function() { 
      console.debug(this.item.toDoDropdown); //I am able to reference the select-option values 
      document.getElementById(this.item.myCheckbox).checked = true; //This is placeholder code to signify my intent at referencing the checkbox 
     } 
} 

在我看來,該checkbox不在scopengChange函數,但是我不確定如何解決這個問題。 此外,我試圖給每個錶行自己的控制器建議在我的互聯網旅行,命名爲here;這是不錯的做法嗎?

+0

也許我失去了一些東西,但'document.getElemntById(this.item.myCheckBox)'不應該返回的元素,它具有沒有id屬性和值'this.item.myCheckBox'不是一個id選擇器 – Nindaff

+0

你是完全正確的。我用這個作爲佔位符來顯示我訪問複選框的意圖。我將編輯。 – eric

回答

1

您可以在索引和項目傳遞給方法:dropDownChange($index,item)

$scope.dropdownChange = function($index,item){ 
    item.myCheckbox = true; 
} 
+0

謝謝你這爲我工作。爲什麼函數的作用域與$ index和item不同?我的印象是這個函數已經可以引用這個數據了。 – eric

+0

此外,似乎只有true/false可以用這種方式設置 - 我無法禁用/啓用複選框 – eric

+0

我認爲你的範圍內的內容實際上是項目,而不是迭代變量項目。 –