У меня есть поля ввода в DOM, которые я захватываю с помощью ng-модели.Нажимать значения массива в контроллере
В мой контроллер, у меня есть массив:
app.controller('mainCtrl', function() {
// set an empty array
self.manualEntry = [];
/**
* ensure form validation
* @returns boolean - ng-disabled value
*/
self.disableForm = function() {
if (self.manualEntry.length <= 0) {
return true;
}
else {
return false;
}
};
});
На мой взгляд, у меня есть поля ввода:
<form>
<input placeholder="John" ng-model="mainCtrl.manualEntry.firstName"/>
<input placeholder="Smith" ng-model="mainCtrl.manualEntry.lastName"/>
</form>
<button type="submit"
ng-disabled="mainCtrl.disableForm()"
title="Submit">Submit
</button>
Я думал, что $scope
автоматически обновил модель для использования в контроллер. Я думал, что использование dot notation
в DOM приведет к этим значениям в массив.
Когда я обновляю эти значения, кнопка submit
в форме остается отключенной (т. Е. Функция disableForm() возвращает true).
Как я могу нажимать эти значения до self.manualEntry
, когда они меняются или обновляются на DOM?
Во-первых, название контроллера не должно отображаться в нг-модели тега. Таким образом, это должно быть: ng-model = "manualEntry.firstName". То же самое в вашем ng-disabled. И тогда, почему бы не использовать «$ scope.manualEntry» именно так? Поскольку manualEntry.firstName и manualEntry.lastName означает, что у вас есть объект, например $ scope.manualEntry {firstName: '', lastName: ''} –
Почему вы используете массив вместо объекта? –
@ M.Be OP использует контроллер вместо области видимости. Совершенно действительный и даже рекомендуемый вариант. –