Загрузка данных при смене страницы в ионном

0

Решение может быть простым, но я не могу его решить. Просто попытайтесь отобразить данные в следующем представлении от контроллера после нажатия на тег привязки на первой странице view.the, но данные успешно отображаются.

//Это мой App.js

.config(function($stateProvider,$urlRouterProvider) {
  $stateProvider
  .state('Login',{
    url:'/Login',
    templateUrl:'templates/Login.html',
    controller:'SignInCtrl'

  })
.state('saledetailstable',{
    url:'/saledetailstable',
    templateUrl:'templates/saledetailstable.html',
    controller:'SignInCtrl'
  })

//Это мой первый взгляд

<tr ng-repeat="item in saleitems">
       <td>{{item.id}}</td>
       <td>{{item.totalqnty}}</td>
       <td>{{item.totalprice}}</td>
      <td><a ng-click="additems()">{{item.inv_no}}</a></td>
       <td>{{item.inv_date}}</td>
       <td>{{item.sync_status}}</td>
       <td>{{item.device_Id}}</td>
       <td>{{item.U_id}}</td>
     </tr>

//Это мой код контроллера

$scope.additems = function ()
  {
      $scope.saledetailsitems=[{ id: '45', item: 'hello' }];


   $state.go('saledetailstable');
  }

//Это мой следующий взгляд

<tr ng-repeat="item in saledetailsitems">
       <td>{{item.id}}</td>
       <td>{{item.item}}</td>
     </tr> 
  • 0
    Я верю, что у каждого представления есть своя область действия, хотя контроллер одинаков. Поэтому, если вы переключаете представление, контроллер запускается еще раз с другой областью действия. Используйте $ rootScope для отображения элементов или передайте идентификатор идентификатора в параметрах состояния и получите его снова
  • 0
    извините, я не мог понять это, поскольку я новичок в этом. Можете ли вы объяснить, в коде или как использовать $ rootScope @ misha130
Теги:
ionic-framework
ngcordova

3 ответа

0

Изменить эту строку

<td><a ng-click="additems()">{{item.inv_no}}</a></td>

с

<td><a ng-click="additems(item)">{{item.inv_no}}</a></td>

и передать этот item в следующем представлении.

На следующей странице вы можете получить массив для item и отобразить данные из него.

ИЛИ

В качестве альтернативы вы можете назначить его $rootScope и получить его в следующем представлении.

С уважением.

0

@misha130 ответ должен работать. Еще одна альтернатива для определения параметров.

вы можете использовать атрибут params в config состояния:

.config(function($stateProvider,$urlRouterProvider) {
  $stateProvider
  .state('Login',{
    url:'/Login',
    templateUrl:'templates/Login.html',
    controller:'SignInCtrl'

  })
.state('saledetailstable',{
    url:'/saledetailstable',
    templateUrl:'templates/saledetailstable.html',
    controller:'SignInCtrl',
    params: {
      item: undefined
    }
  })

Этот синтаксис является совершенно новым, вы можете найти его в этой документации: http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$stateProvider.

Кроме того, этот билет полезен: как передавать параметры с помощью ui-sref в ui-router для контроллера

Кстати, для большей ясности я предлагаю вам использовать разные контроллеры для состояний.

0

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

Прежде всего настройте необязательный параметр в нашей конфигурации маршрутизации с помощью: var

.config(function($stateProvider,$urlRouterProvider) {
  $stateProvider
  .state('Login',{
    url:'/Login',
    templateUrl:'templates/Login.html',
    controller:'SignInCtrl'

  })
.state('saledetailstable',{
    url:'/saledetailstable:id',
    templateUrl:'templates/saledetailstable.html',
    controller:'SignInCtrl'
  })

После этого в state.go добавим параметр, который является идентификатором, и проверим stateParams на входе

app.controller('SignInCtrl',
  function ($scope,$stateParams) {
   $scope.additems = function ()
   {
           $state.go('saledetailstable', {"id": 45);
   }
   //Check for the state params when the view changes 

 $scope.$on('$ionicView.enter', function () {
      if($stateParams.id){
            $scope.saledetailsitems=[{ id: '45', item: 'hello' }];
       }
    });
});

Теперь это более простой способ

app.controller('SignInCtrl',
  function ($rootScope,$scope) {
        if($rootScope.saledetailsitems)
         $scope.saledetailsitems = $rootScope.saledetailsitems;
       $scope.additems = function ()
      {
          $rootScope.saledetailsitems=[{ id: '45', item: 'hello' }];
          $state.go('saledetailstable');
      }
});

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

  • 0
    спасибо, брат. Позволь мне попробовать. пожалуйста, проверяйте комментарии через регулярные промежутки времени, я буду публиковать больше сомнений после попытки этого ...

Ещё вопросы

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