У меня есть объект: model.data
Как отключить кнопку, если у этого объекта есть массив вопросов, и если этот массив имеет более одного элемента?
Я попытался:
data-ng-disabled="model.questions.length > 0"
Но это, похоже, не работает вообще.
У меня есть объект: model.data
Как отключить кнопку, если у этого объекта есть массив вопросов, и если этот массив имеет более одного элемента?
Я попытался:
data-ng-disabled="model.questions.length > 0"
Но это, похоже, не работает вообще.
EDIT: изменение ответа в ответ на сообщения и комментарии
Как насчет:
data-ng-disabled="checkQuestions()"
И затем в вашем контроллере:
$scope.checkQuestions = function() {
if (model.questions.length > 1) { // your question said "more than one element"
return true;
}
else {
return false;
}
};
На самом деле это сводится к тому, что для выполнения этой задачи существует несколько способов; выражение, функция, связанная переменная (о чем свидетельствуют различные ответы здесь). Если ни один из них не работает, проблема может быть в вашей модели вместо этого. Если бы вы могли прояснить некоторые несоответствия (см. Мои комментарии о запросе структуры вашей модели... также, вы заинтересованы в ее отключении, если что-либо в массиве, или только в том случае, если в массиве есть несколько вещей?), это поможет понять это.
Здесь сценарий, показывающий все три подхода; вы увидите, что все они работают. Сравните ваш контроллер со скрипкой и посмотрите, сойдет ли он.
Вы определенно можете использовать выражение вместо функции. Но вы можете проверить, есть ли массив undefined
.
<button ng-disabled="model.questions != undefined && model.questions.length > 0"></button>
Я не мог получить ответ @zsong на работу, и я не хотел создавать функцию, чтобы вернуть длину массива, поэтому я получил ее работу, создав другую переменную области видимости, которая вернула array.length.
$scope.modelQuestionsLength = $scope.model.questions.length;
Тогда я мог бы сделать
<button ng-disabled="modelQuestionsLength > 0"></button>
Создайте модель, а затем установите для нее значение по умолчанию значение false. Затем измените его значение на true, если длина массива не пуста. После этого привязка модели к атрибуту ng-disabled кнопки.
Я не мог получить способ undefined, поэтому, если у кого-то еще есть проблемы, это сработало для меня:
<input ng-disabled="fieldsPermittedForEdit.indexOf('postDate') < 0">
В этом примере я отключу это поле, если postDate
не существует в массиве fieldsPermittedForEdit
.