Данные формы помещаются в массив, но не отображаются в пользовательском интерфейсе в angularjs

0

Обновленный вопрос. Я нажимаю данные в db, а затем в массиве, чтобы он отображался сразу, используя угловое двухстороннее связывание. Однако мои данные попадают в консоль. Но он не отображается в пользовательском интерфейсе.

контроллер

    contacts.getall().then(function(response){
     vm.people = response.data;
    });


    vm.toggleSidenav = function(){
      $mdSidenav('left').open();
    };


    vm.saveit = function(info){
         vm.people.push(vm.xyz); 
         contacts.add(vm.xyz);
         console.log(vm.people);

Мой список

   <md-list>
  <md-list-item  ng-repeat="person in vm.people | filter:vm.searchText |     orderBy:'name'" ng-click="showDialog($event, person)">
  <img alt="{{ person.name }}" ng-src="https://lh3.googleusercontent.com/-nR0PNFb3p4k/AAAAAAAAAAI/AAAAAAAAAAA/NVt2CqCrCis/photo.jpg" class="md-avatar" />
   <p>{{ person.name }}</p>
   <p class="phn">{{ person.phone }}</p> 

<md-icon ng-click="vm.showConfirm($event, person)"aria-label="Open Chat" class="md-secondary md-hue-3" ng-class="">delete</md-icon>
 </md-list-item>

  </md-list>

Для консоли

  vm.people.push(vm.xyz); 
  contacts.add(vm.xyz);
  console.log(vm.people);
  • 0
    есть ошибка?
  • 0
    Нет ошибки на консоли.
Показать ещё 2 комментария
Теги:
arrays

1 ответ

0

-------------------------------------------------- ------- Исправлено обновление ----------------------------------------- --------------

Al-right, поэтому существует очень простое правило Angular, когда вы хотите передать значение с одного контроллера на другой, лучший способ - использовать Factory, но поскольку в этом случае вы не используете второй контроллер, мы выиграли ' t использовать фабрику.

вы инициализировали var vm.people = []; как массив.

но ниже здесь вы нажимаете OBJECT в пределах массива

vm.people.push({
  name: vm.info.name,
  phone: vm.info.phone,
  email: vm.info.email
});

Что в этом случае неправильно, поэтому область не обновлялась.

то, что вы должны делать, это создать объект JSON и обновить свой файл $scope.showData

vm.people = { "name": vm.info.name, "phone": vm.info.phone, "email": vm.info.email};

Это приводит к обновлению текущей области и одновременному сохранению данных. фабрика хранения в плункере была предназначена только для тестирования, если вы хотите ее удалить. но если вам это нужно, вы знаете, как передавать и хранить данные на заводе, а затем извлекать их.

взгляните на обновление, зафиксированное Plunker

Анимированный GIF:

Изображение 174551

-------------------------------------------------- --------- Старый ответ --------------------------------------- ------------------- Эй, я сделал рабочий плункер из вашего собственного кода, массива vm.people который вы определили сверху, а затем нажав данные в нем в vm.saveit fucniton работают абсолютно нормально и, как и ожидалось, vm.people имеет объект с тремя 3 свойствами, что, по-видимому, является проблемой?

[Object]
0
:

email: "[email protected]"
name: "waqas"
phone: "4245345343"

Рабочий файл plunker Form Данные не попадают в массив в angularjs

  • 0
    Привет waqas, vm.saveit () работает. Сначала я делаю ввод данных в дб, а затем в угловой массив, чтобы сразу показать это. Но это не работает. вот ссылка на github для контроллера - github.com/sourabh-garg/contactaap.1/blob/master/app/assets/… Если вы хотите узнать, что я собираюсь сделать, просто создайте новую запись в flap-contact.herokuapp .com
  • 0
    разреши мне взглянуть
Показать ещё 17 комментариев

Ещё вопросы

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