2016-05-20 5 views
0

Hallo Leute, ich habe ein Problem. Ich speichere einige Daten in $scope.somevariable und dann gehe ich in einen anderen Zustand. Das Problem, das ich mit Blick auf bin, ist, dass, wenn ich in einem anderen Zustand übergehen, sehe ich nicht die Daten eher da sehe ich die Ansicht, die ich zu machen habe versucht, die hierDaten werden nicht angezeigt, wenn ich in einen anderen Zustand gehe ionic

<ion-view view-title="ShowUserList"> 
    <ion-content> 
    <!-- <ion-checkbox ng-model='checkStatus1' ng-click="showAlert(checkStatus1)"> 
     <h2 class="ng-binding">{{tittle}}</h2> 
     <span class="distance ng-binding"></span> 
     <h3 class="ng-binding">Created : {{created}}</h3> 
     <h3 class="ng-binding">Target : {{targetD}}</h3> 
    </ion-checkbox> --> 

    <ion-list> 
     <ion-item collection-repeat="user in users"> 
     Hello, {{user}}! 
     </ion-item> 
    </ion-list> 


    </ion-content> 
</ion-view> 

ist der Controller aus, wo ich ist versucht

.controller('optionActionCtrl' , function($scope, $timeout , $http , $ionicModal , $state){ 
    // Triggered in the login modal to close it 


    $scope.closeActionModal = function() { 
    console.log('hello'); 
    $scope.modal.hide(); 
    }; 

    // Open the login modal 
    $scope.openAddActionModel = function() { 
    $scope.modal.show(); 
    // $('#action_datePicker').val(new Date()); 
    }; 

    $scope.showListOfUser = function(){ 
    //call made to the server 

    // add all the users 
    $scope.users = ['a' , 'b' , 'c' , 'd']; 

    $state.go('app.UserListForAssigned') 
    }; 
}) 

zu machen und hier ist der Zustand, in dem ich versuche

.state('app.UserListForAssigned', { 
     url: '/userList', 
     views: { 
     'menuContent': { 
      templateUrl: 'templates/showUsers.html', 
      controller: 'optionActionCtrl' 
     }, 
     } 
    }) 

Zurück Zustand

zu gehen
.state('app.options', { 
     url: '/options', 
     views: { 
     'menuContent': { 
      templateUrl: 'templates/options.html', 
      controller: 'optionActionCtrl' 
     }, 
     } 
    }) 
+0

Können Sie den ersten Status Ihres Posts hinzufügen? – Nenroz

+0

@Habkamas Ich habe den vorherigen Status hinzugefügt –

+0

Sie möchten die gesamte Liste der Benutzer oder nur 1 ausgewählten Benutzer übergeben? – Huiting

Antwort

0

Sie sollten versuchen, $scope.users = ['a' , 'b' , 'c' , 'd']; außerhalb von showListOfUser Funktion zu bewegen.

Sie verwenden diese Funktion, um $scope.users mit einigen Werten zu setzen und zum anderen state zu wechseln. Dann, auf der anderen state, denke ich, dass showListOfUser Funktion nicht mehr verwendet wird, so dass $scope.users nicht existiert.

+0

Gibt es keine Möglichkeit, dass ich das Array Benutzer in der Funktion ausfüllen, weil ich es nicht brauche, bis diese Funktion aufgerufen wird. Ich nehme gerade an, dass wenn ich in einen anderen Zustand gehe, die Scope-Variable geleert wird oder etwas passiert.Ich muss die Daten beibehalten, die in dieser Funktion gesetzt werden, weil ich sie in der Ansicht brauche, die gerendert wird, wenn diese Zustände aufgerufen werden. Ich fand einen Weg und das war eine Funktion in ng-init aber aus was ich in verschiedenen Foren gelesen habe, es ist keine gute Praxis, es zu verwenden –

+0

Hum Ich denke, Sie könnten entweder einen neuen Controller speziell für app.UserListForAssigned verwenden , oder erstellen Sie eine Bedingung, die nur Daten beibehält, wenn der aktuelle Status app.UserListForAssigned lautet. Ich habe das gefunden, aber ich habe es nicht getestet: $ state.is ('your_stat') return true ist aktueller Zustand ist 'your_state'. – Nenroz

1

Diese Methode funktioniert, wenn Sie entweder die gesamte Benutzerliste oder nur einen ausgewählten Benutzer übergeben möchten.

Ich nehme an, dass Sie in Ihrem vorherigen Zustand auf eine Schaltfläche klicken, um showListOfUser aufzurufen. Sie können danach entsprechend anpassen.

Zurück Zustand:

App

.state('app.options', { 
      url: '/options', 
      views: { 
      'menuContent': { 
       templateUrl: 'templates/options.html', 
       controller: 'optionActionCtrl' 
      }, 
      } 
     }) 

Controller

.controller('optionActionCtrl' , function($scope, $timeout , $http , $ionicModal , $state){ 
    // Triggered in the login modal to close it 


    $scope.closeActionModal = function() { 
    console.log('hello'); 
    $scope.modal.hide(); 
    }; 

    // Open the login modal 
    $scope.openAddActionModel = function() { 
    $scope.modal.show(); 
    // $('#action_datePicker').val(new Date()); 
    }; 

    $scope.showListOfUser = function(){ 
    //call made to the server 

    // add all the users 
    $scope.users = ['a' , 'b' , 'c' , 'd']; 
    }; 
}) 

Html

<a class="button" ng-click="showListOfUser()" ng-href="#/userList/{{users}}">click</a> 

New Zustand:

App

.state('app.UserListForAssigned', { 
     url: '/userList/:userID', 
     views: { 
     'menuContent': { 
      templateUrl: 'templates/showUsers.html', 
      controller: 'UserListCtrl' 
     }, 
     } 
    }) 

Controller (erstellen Sie einen separaten Controller)

.controller('UserListCtrl', function($scope, $stateParams) { 
    console.log('userID: ' + $stateParams.userID); 

    $scope.users = $stateparams.userID; 

}); 

Statt $state.go() zu verwenden, ich bin vorbei $scope.users durch ng-href und es durch $stateParams abruft. Unter .state('app.UserListForAssigned', ...) muss url definiert werden, um den Parameter zu übernehmen.

Verwandte Themen