Как протолкнуть после $ http.post в AngularJS

0

Я пытаюсь найти правильный синтаксис, чтобы нажать новый добавленный элемент после того, как он был http.posted.

Синтаксис, приведенный ниже, не дает мне никакой ошибки, но также не подходит. Любые идеи помогут

$scope.insertAppointmentReminderEntry = function() { 

    $scope.add_reminder_time     = this.add_reminder_time;
    $scope.add_reminder_timeunit = this.add_reminder_timeunit;
    $scope.add_delivery_method   = this.add_delivery_method;
    $scope.add_delivery_contact  = this.add_delivery_contact;

    var data = {
         group_id               : $scope.groupid,
         appointment_id         : $scope.appointmentid,
         reminder_time          : $scope.add_reminder_time,
         reminder_timeunit      : $scope.add_reminder_timeunit,
         delivery_method        : $scope.add_delivery_method,
         delivery_contact       : $scope.add_delivery_contact
    };

      $http.post(urlApiAppointmentReminders + $scope.groupid, data).success(function(data, status) {

          var newItemNo = $scope.appointmentreminders.length+1;

          $scope.appointmentreminders.push($scope.appointmentreminders[newItemNo].data);
   })

   modalInstance.close();
};  

HTML

    <div ng-repeat="x in appointmentreminders" class="row"  ng-style="{ 'border-top' : ( x.delivery_method != appointmentreminders[$index-1].delivery_method && $index != 0 ? '1pt solid #eee' : '0pt solid #eee' )}" style="border-top:1pt solid #eee; padding: 0.25em 0 0.25em 0" >

    <div class="col-md-offset-1 col-md-4">
               @{{x.time}} @{{x.timeunit}}@{{x.time > 1 ? 's' : ''}}  prior to appointment
    </div>

    <div class="col-md-4">
               Reminder: @{{x.delivery_contact}}
    </div>

    <div class="col-md-2">                  
               <!-- delete this reminder -->
               <a class="btn btn-xs btn-warning pull-right glyphicon glyphicon-trash" ng-click="ctrl.removeItem($index)"></a>           
    </div>  

    </div> <!-- ng-repeat -->

html (модальный добавить новое напоминание)

  <script type="text/ng-template" id="addScheduleModalContent.html">
    <div class="modal-header">
      <h3 class="modal-title">Add a new appointment reminder</h3>
    </div>
    <div class="modal-body">

        <div class="row" style="padding: 0.5em 0 0.5em 0.5em">  
              <div class="col-sm-4" >
                   {!! Form::text( 'reminder_time', '30', ['class' => 'form-control', 'placeholder' => '', 'ng-model' => 'add_reminder_time']) !!}
              </div>
              <div class="col-sm-8" >
                   {!! Form::select('reminder_timeunit', ['minute' => 'minutes(s)', 'hour' => 'hour(s)', 'day' => 'day(s)', 'week' => 'week(s)', 'month' => 'month(s)'], null, ['class' => 'form-control', 'ng-model' => 'add_reminder_timeunit']) !!}
              </div>
        </div>

        <div class="row" style="padding: 0.5em 0 0.5em 0.5em">  
              <div class="col-sm-4" >
                   {!! Form::select('delivery_method', ['eml' => 'Email'], null, ['class' => 'form-control', 'ng-model' => 'add_delivery_method']) !!}
              </div>
              <div class="col-sm-8" >
                   {!! Form::text('delivery_contact', null, ['class' => 'form-control', 'placeholder' => 'Your email address', 'ng-model' => 'add_delivery_contact']) !!}
              </div>
        </div>

    <div class="modal-footer">
      <button class="btn btn-primary" ng-click="insertAppointmentReminderEntry()">Save</button>
      <button class="btn btn-primary" ng-click="$close()">Close</button>
    </div>
  </script>         
  • 1
    Избавьте себя от дублирования имен свойств, используя один объект в ng-model и передавая этот объект непосредственно в $http.post . Вы не хотите помещать объект в массив?
  • 0
    Я уверен, что ты прав, я немного теряюсь в JS. так, например, вы имеете в виду изменение $ scope.add_reminder_time на $ scope.reminder_time, чтобы соответствовать моим именам API
Показать ещё 1 комментарий
Теги:

1 ответ

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

Это должно быть достаточно $scope.appointmentreminders.push(data)

или если вы хотите поместить новые данные в определенную позицию в массиве, тогда сделайте это $scope.appointmentreminders[newItemNo] = data

Но не комбинируйте их в одну строку :)

  • 0
    необходимо подтвердить, что data в ответе являются полными объектами, так как есть 2 переменных data
  • 0
    Спасибо! Нажатие работает, отображается новый элемент, но я не вижу данных для него (если, конечно, я не обновлю). Как сказал @charlietfl, возможно, я испортил имена своих свойств. Добавленный код выше
Показать ещё 2 комментария

Ещё вопросы

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