我正在尝试为选项列表添加删除功能: 但始终收到错误消息:indexOf未定义!
有人可以帮助我吗?提前谢谢!
以下是我的代码的一部分:
Html:
<div class="question_typeList" ng-switch-default>
<table class="question_heading">
<tbody>
<tr ng-repeat="option in question.options">
<td>
<input class="question_textfield" placeholder="My Option" ng-model="option.value[lang]">
<button ng-click="removeOption(option)">X</button>
</td>
<td>
{{option.value}}
</td>
</tr>
</tbody>
{{question.options}}
</table>
<button ng-click="newOption(question)">Add Options</button>
</div>
js part:
$scope.questions = [
{
title: $scope.newTranslatable("Title"),
description: $scope.newTranslatable("Mr./Mrs./Ms."),
type: "list",
options: [
{
value: $scope.newTranslatable("Mr")
}, {
value: $scope.newTranslatable("Mrs")
}, {
value: $scope.newTranslatable("Ms")
}
]
}
$scope.removeOption = function(option) {
var index = $scope.questions.options.indexOf(option);
if(index != -1) {
$scope.questions.options.splice(index, 1);
}
}
答案 0 :(得分:1)
$ scope.questions被定义为一个数组。 options不是数组的属性,而是数组元素的属性。
你必须遍历$ scope.questions数组。这引发了一个新问题,因为据我所知,你的问题数组似乎没有一个«key»字段可供比较。
尽管如此,假设您将设法获得一个独特的字段,我认为您可以实现一个函数来删除问题[x] .options选项:
$scope.removeOption = function(uniqueKey,option) {
var questionIndex = $scope.questions.yourUniqueKeyField.indexOf(uniqueKey);
if(questionIndex != -1){
var optionIndex = $scope.questions[questionIndex].options.indexOf(option);
if(optionIndex != -1) {
$scope.questions[questionIndex].options[optionIndex].splice(optionIndex,1);
}
}
}