Я знаю, что название немного неоднозначно, но вот проблема: у меня есть 2 поля ввода в форме, которая выглядит так:
<form name="modifyApp" class="form-signin" ng-submit="modify(val)">
<input type="text" class="form-control" ng-model="val.name" id="appName">
<input type="number" class="form-control" ng-model="val.number" id="number" min="0" max="65535">
<button type="submit">Submit</button>
</form>
Когда я загружаю страницу, я заполняю эти два с некоторыми значениями внутри контроллера:
angular.module('myApp').controller('modifyAppController', ['$scope', function($scope) {
function setFields(appName, appNumber){
document.getElementById("appName").value = appName
document.getElementById("number").value = appNumber
}
$scope.modify= function(val){
console.log(val)
}
}])
Проблема в том, что я нажимаю кнопку "Отправить". Значения не будут зарегистрированы, если я их не изменю. Например, если я нажимаю кнопку "Отправить", ничего не печатается, но если я изменю номер или имя, оно будет напечатано.
В вашем контроллере вы можете просто инициализировать объект val таким образом:
angular.module('myApp', [])
.controller('modifyAppController', ['$scope', function($scope) {
$scope.val = {
name: '',
number: 0
};
function setFields(appName, appNumber) {
$scope.val.name = appName;
$scope.val.number = appNumber;
}
$scope.modify = function(val) {
console.log(val);
};
}]);
почему бы просто не сделать следующее в качестве первой строки в вашей форме
<form name="modifyApp" class="form-signin" ng-submit="modify()">
и тогда ваш контроллер может выглядеть так
$scope.val = {
name: '',
number:0//some default values
}
$scope.modify= function(){
console.log($scope.val)
}
Вам нужно переписать контроллер:
angular.module('myApp').controller('modifyAppController', ['$scope', function($scope) {
$scope.val = {
name = 'My app name',
number = '1'
};
function setFields(appName, appNumber){
$scope.val.name = appName;
$scope.val.number = appNumber;
}
$scope.modify= function(){
console.log($scope.val);
}
}])
Вам не нужно напрямую изменять значения DOM в Angular. Все ваши переменные $ scope доступны в вашем шаблоне.