2017-04-03 3 views
0

Projekt: Ich bin in angular.So i $ Zustand bin mit zum Ändern der Ansicht state.My Zustandscode ist

angular.module('myApp.controller', []).controller('firstController', ['$scope', '$state', function($scope, $state) { 
$scope.loadView2 = function() { 
    $state.go('secondView', { 
     firstname: $scope.firstname, 
     lastname: $scope.lastname 
    }); 
    }; 
}]); 

angular.module('myApp.controller').controller('secondController', 
    function($scope, $stateParams, $state) { 
     console.log($state.params); // empty object 
     $scope.firstname = $stateParams.firstname; // empty 
     $scope.lastname = $stateParams.lastname; //empty 
}); 

Und meine Route folgt

angular.module('myApp', ['myApp.controller', 'ui.router']).config(['$stateProvider', function($stateProvider) { 
$stateProvider.state('firstView', { 
    url: '/fisrt-view', 
    templateUrl: './partials/view1.html', 
    controller: 'firstController' 
}); 
$stateProvider.state('secondView', { 
    url: '/second-view', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController' 
}); 

Aber ich bekomme immer ein leeres Objekt in View2.

Antwort

2

Daten zwischen den Ansichten zu übergeben Sie params in der zweiten Ansicht definieren müssen, wie folgt aus:

$stateProvider.state('secondView', { 
    url: '/second-view', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController', 
    params: { 
    mynewparam: null 
    } 
}); 

dann, wenn Sie Ansicht wechseln:

$state.go('secondView', {mynewparam: 'newParam'}); 

und Sie retrive die Daten in der Ansicht Controller wie folgt:

$scope.mynewparam = $stateParams.mynewparam; 

Beachten Sie auch, dass Sie Staaten verketten können, ohne $ StateProvid zu wiederholen äh, Beispiel hier:

$stateProvider 
    .state('firstView', { 
    url: '/fisrt-view', 
    templateUrl: './partials/view1.html', 
    controller: 'firstController' 
    }) 
    .state('secondView', { 
    url: '/second-view', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController', 
    params: { 
     mynewparam: null 
    } 
    }); 
+0

@RahulDey froh, dass es funktioniert, genehmigte Lösung würde geschätzt werden. Viel Spaß beim Programmieren :) –

0

Sie haben Parameter wie folgt zu definieren:

$stateProvider.state('secondView', { 
    url: '/second-view?firstname&lastname', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController' 
}); 

oder:

$stateProvider.state('secondView', { 
    url: '/:firstname/:lastname/second-view', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController' 
}); 

oder:

$stateProvider.state('secondView', { 
    url: '/second-view', 
    templateUrl: './partials/view2.html', 
    controller: 'secondController', 
    params: { 
     firstname: null, 
     lastname: null, 
    } 
}); 

Hier wird das in engem Zusammenhang steht section aus Ui-Router Repo.

0

Ihr secondView Staat sollte sein:

$stateProvider.state('secondView', { 
    url: '/second-view', 
    params: { 
     firstname: null, 
     lastname: null 
    }, 
    templateUrl: './partials/view2.html', 
    controller: 'secondController' 
}); 

Das es beheben sollte.

Verwandte Themen