Я начинаю начинать с углового (но не с JS), поэтому, надеюсь, вы простите меня, если этот вопрос звучит глупо. Рассмотрим следующий небольшое приложение:Заполнение данных в форме с использованием углового
HTML:
<!doctype html>
<html ng-app="todoApp">
<head>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="/js/TestController.js"></script>
</head>
<body ng-controller="TestController as myControl">
<div id="overlaybox">
<button ng-click="myControl.showUpd(4)">Test</button><br/><br/><br/>
<form ng-submit="myControl.updTodo()">
Note:<br/>
<textarea rows="5" cols="30" id="updContent" ng-model="noteupd.content"></textarea><br/>
Deadline (format YYYY-MM-DD HH:MM):<br/>
<input type="text" id="updDeadline" ng-model="noteupd.deadline" /><br/>
Completed:
<input type="checkbox" id="updCompleted" ng-model="noteupd.completed" /><br/>
<input type="hidden" id="updID" ng-model="noteupd.id" /><br/>
<input type="submit" value="Update" />
</form>
</div>
</body>
</html>
радиально-контроллер:
angular.module('todoApp', []).controller('TestController', function($scope, $http) {
var thisApp = this;
thisApp.showUpd = function(noteID) {
$http({method : 'GET', url : 'http://localhost:8000/notes/' + noteID})
.then (function(response) {
console.log(response.data.content);
console.log(response.data.deadline);
console.log(response.data.id);
console.log(response.data.completed);
document.getElementById("updContent").innerHTML = response.data.content;
document.getElementById("updDeadline").value = response.data.deadline;
document.getElementById("updID").value = response.data.id;
if (response.data.completed == 1) {
document.getElementById("updCompleted").checked = true;
} else {
document.getElementById("updCompleted").checked = false;
}
}, function() {
alert("Error getting todo note");
});
}
thisApp.updTodo = function(noteupd) {
console.log("TEST");
console.log($scope.noteupd);
}
});
После нажатия кнопки Test кнопку Я получаю следующий вывод в моей консоли:
- TestCo ntroller.js: 7 123123
- TestController.js: 8 2016-01-05 10:28:42
- TestController.js: 9 4
- TestController.js: 10 0
К тому времени , поля в форме заполнены (и скрытое поле имеет значение). И после нажатия Update я получаю это в консоли:
- TestController.js: 27 ИСПЫТАНИЙ
- TestController.js: 28 неопределенные
Если я изменить значение в полях вручную, я получить что-то другое вместо «undefined», но идея состоит в том, что не нужно менять значения. Кроме того, объект не содержит скрытый «id», даже если все поля изменены.
Очевидно, что я новичок в этом, и, очевидно, я делаю это неправильно, но есть ли у кого-нибудь предложение о том, как я могу сделать эту работу?
Вы не хотите использовать document.getElementById в угловом использовании angular.element ("# иды") вместо – Binvention
понимают также угловые 2 способа связывания данных. Значение, если вы измените значение вашей переменной ng-model в своем коде, оно изменится в вашем html – Binvention
И вы не определили noteupd – Binvention