Перенос данных из Angular Bootstrap Typeahead в другую вкладку с помощью UI-Router

0

У меня есть 3 вкладки: клиенты, биллинг и метод. На первой вкладке у меня есть Bootstrap Typeahead, который связан с json файлом клиентов. Вторая вкладка - это подробное представление учетной записи клиента с невыплаченными платежами. Наконец, третья вкладка - это фактически взимать с клиента кредитную карту. Кроме того, я использую UI Router для навигации по сложной иерархии. вкладки называются представлениями страницы, называемой make-payments, которая является дочерним элементом родительского состояния, называемого платежами. Я пытаюсь использовать typeahead на первой вкладке (клиенты), чтобы выбрать и просмотреть деталь клиента во второй вкладке (биллинг). Я надеюсь, что это произойдет, когда пользователь выберет человека из выпадающего списка, он должен сразу перейти к следующей вкладке, а следующая вкладка должна показать, что детали лица. Мне сложно понять, как получить данные от typeahead до следующих двух вкладок, и если мне нужна услуга, чтобы сделать это или нет.

make-payment.html (Мои вкладки):

<h3 class="text-center">Make a One-Time Payment</h3>
<uib-tabset type="pills nav-pills-centered">

  <uib-tab heading="1">
    <div ui-view=customers></div>
  </uib-tab>

  <uib-tab heading="2">
    <div ui-view=billing></div>
  </uib-tab>

  <uib-tab heading="3">
    <div ui-view=method></div>
  </uib-tab>

</uib-tabset>

clients.html & typeahead.js ctrl:

angular
  .module('myApp')
  .controller('TypeAheadCtrl', function($scope, $http) {
    $http.get('customers.json').success(function(data) {
      $scope.customers = data;
    });

    var self = this;
    self.submit1 = function() {
      console.log('First form submit with', self.customer)
    };


  });
<div ng-controller="TypeAheadCtrl as ctrl">
  <form ng-submit="ctrl.submit1()" name="customerForm">
    <div class="form-group">
      <label for="account">Account Number</label>
      <input type="text" class="form-control" placeholder="Search or enter an account number" ng-model="ctrl.customer.account" uib-typeahead="customer as customer.index for customer in customers | filter:$viewValue | limitTo:6" typeahead-template-url="templates/customer-tpl.html"
      typeahead-no-results="noResults">
    </div>
  </form>
</div>

app.js (где у меня есть ui-router)

.config(function($stateProvider, $urlRouterProvider) {
      $urlRouterProvider.otherwise('/payments/make-payment');

      $stateProvider

      // HOME STATES AND NESTED VIEWS ========================================
        .state('payments', {
        url: '/payments',
        templateUrl: 'views/payments.html'
      })

      .state('activity', {
          url: '/activity',
          templateUrl: 'views/activity.html'
        })
        // nested lists
        .state('payments.make-payment', {
          url: '/make-payment',
          views: {
            '': {
              templateUrl: 'views/make-payment.html'
            },
            '[email protected]': {
              templateUrl: 'views/customers.html'
            },
            '[email protected]': {
              templateUrl: 'views/billing.html'
            },
            '[email protected]': {
              templateUrl: 'views/method.html'

            });

        });

billing.html

<p>{{ctrl.customer.account.name}}</p>
<p>{{ctrl.customer.account.address}}</p>
<p>{{ctrl.customer.account.email}}</p>
<p>{{ctrl.customer.account.phone}}</p>
Теги:
angular-ui-router
angular-ui-typeahead

1 ответ

0

вы можете отправить выбранные данные клиента в службу и вытащить из службы на двух вкладках.

поэтому я предполагаю, когда вы на самом деле выбираете пользователя из раскрывающегося списка или что бы вы ни называли myFactory.setCustomer(data).

и в ваших двух других состояниях вы можете посмотреть функцию getCustomer() в myFactory

.factory('myFactory', myFactory);
    function myFactory() {
        var customer;
        function setCustomer(data) {
            customer = data;
        }
        function getCustomer() {
            return customer;
        }

        //public API
        return {
            setCustomer: setCustomer,
            getCustomer: getCustomer
        }
    }

Ещё вопросы

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