У меня есть форма, которая отправляет расчетное значение в формате JSON на сервер. Но я не могу понять, почему только ng-модель, которая находится внутри ngSwitch, не отправляет в массив JSON. Я предположил, что ng-модель должна работать в ngSwitch, используя $ parent. Но кажется, что угловатое все еще нуждается в чем-то большем.
Вот моя форма
<form ng-app="SaunaDoorCalc" ng-controller="SaunaDoorCalcController" class="calculator" name="calculator">
....
<tr><td>Result</td>
<td ng-switch-default ng-model="$parent.doorsize">@{{selectedSizeSwitch}}, @{{selectedStandardSize.label}}</td>
<td ng-switch-when="non-standard" ng-model="$parent.doorsize">@{{selectedSizeSwitch}}, @{{DoorSizeB}}x@{{DoorSizeH}}</td>
<td ng-switch-default ng-model="$parent.baseprice">@{{selectedStandardSize.price}}</td>
<td ng-switch-when="non-standard" ng-model="$parent.baseprice">@{{DoorSizeB*DoorSizeH*5000/1000000}}
</td>
</tr>
....
</form>
и мой сценарий
angular
.module('SaunaDoorCalc',[])
.controller('SaunaDoorCalcController', function($scope, $http) {
$scope.outerScope = {};
$scope.formData = {};
.....
$scope.submit = function(isValid) {
if (isValid) {
$http.post($scope.url,
{
"calcname": "saunadoor",
"doorsize": $scope.doorsize,
"baseprice": $scope.baseprice,
"glass": $scope.selectedGlass,
"korobka": $scope.selectedKorobka,
"petli": $scope.selectedPetli,
"dekor": $scope.selectedDekor,
"dostavka": $scope.selectedDostavka,
"montazh": $scope.montazh,
"name": $scope.name,
"tel": $scope.tel,
"email": $scope.email,
"msg": $scope.msg,
}).
success(function(data, status) {
console.log(data);
$scope.status = status;
$scope.data = data;
$scope.result = data;
});
$scope.name = null;
$scope.tel = null;
$scope.email = null;
$scope.msg = null;
$scope.DoorSizeB = null;
$scope.DoorSizeH = null;
$scope.calculator.$setPristine();
$scope.message = 'Заказ отправлен. В ближайшее время мы с вами свяжемся.';
}else{
$scope.message = 'Заполните обязательные поля формы!';
}
}
});
ng-model
не привязывается к элементам td
вы должны использовать ng-bind
вместо
https://docs.angularjs.org/api/ng/directive/ngModel
Директива ngModel связывает вход, select, textarea (или пользовательский контроль формы) с свойством в области видимости с помощью NgModelController, который создается и отображается этой директивой.
<td ng-switch-default ng-bind="$parent.doorsize">@{{selectedSizeSwitch}}, @{{selectedStandardSize.label}}</td>
не решает проблему, как я ожидаю чтобы получить вычисленное значение{{selectedSizeSwitch}}, {{selectedStandardSize.label}}
внутри переменной doorize, а затем отправить$scope.doorsize
в массив JSONng-bind
он заменит текст внутри элемента значением переменной в атрибутеng-bind
т.е.<b ng-bind="val">123</b>
будет выводитьval
а не123