Архитектура модели данных AngularJS

0

В моем приложении "Угловое" есть следующее:

$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.

Может ли кто-нибудь объяснить мне, как или предложить лучшее решение?

  • 0
    Это действительно зависит от того, как ваш сервер принимает данные. Во фронтэнде у вас есть массив, и вы можете отформатировать его так, как вам нравится.
Теги:
datamodel

1 ответ

1
Лучший ответ

Если вы используете ng-model для своих входов и установите ее на объект, вы можете затем вставить этот объект в сообщение, вот действительно простой пример:

JSFiddle

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
    };

}]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню