В моем приложении "Угловое" есть следующее:
$scope.things = [{
title: 'Simple',
type: 1,
form: {
input: [1, 2, 3],
clone: true
}
}];
$scope.clone = function(item) {
item.form.input.push(Math.floor(Math.random() * 999));
};
А на части HTML:
<div ng-repeat="item in things" class="item">
<h2>{{item.title}}</h2>
<div ng-repeat="input in item.form.input">
<input type="text" />
</div>
<button ng-click="cloneInput(item)">Clone</button>
</div>
При нажатии кнопки "Клонировать" я нажимаю новый элемент для формирования массива и добавляет новый ввод в DOM.
Я хочу $ http.post все значения для входов.
Я знаю, что нужно толкать что-то, что мне нужно использовать
$http.post('/path/to/my/api', {my object}).callback()
Но я не знаю, как сделать объект из всех входных данных .item.
Может ли кто-нибудь объяснить мне, как или предложить лучшее решение?
Если вы используете ng-model
для своих входов и установите ее на объект, вы можете затем вставить этот объект в сообщение, вот действительно простой пример:
HTML:
<div ng-app="myApp" ng-controller="dummy">
<div ng-repeat="input in items">
<input type="text" name="{{input.name}}" ng-model="data[input.name]" />
</div>
<button ng-click="submit()">Submit</button>
<p ng-show="displayIt">{{data}}</p>
</div>
JS:
angular.module('myApp', [])
.controller('dummy', ['$scope', function ($scope) {
$scope.items = [{
name: 'test'
}, {
name: 'test2'
}];
$scope.data = {};
$scope.displayIt = false;
$scope.submit = function () {
// This is only to check it
$scope.displayIt = true;
// Do your post here
};
}]);