Ich denke, der beste Weg, dies zu tun ng-switch
, nur ein Controller, eine Route, kein Nachladen zu verwenden wäre, indem in allen Schritten Umgebungsvariablen, wie folgt aus:
<div ng-controller="stepCtrl">
<div ng-switch="step">
<div ng-switch-when="1">
<!-- here you can include your step 1 template,
or simply just hardcode it here: -->
<div ng-include src="'.../step1.html'">
<button ng-click="setStep(1)"></button>
</div>
<div ng-switch-when="2">
<div ng-include src="'.../step2.html'">
<button ng-click="setStep(2)"></button>
</div>
<div ng-switch-when="3">
<div ng-include src="'.../step3.html'">
<button ng-click="setStep(3)"></button>
</div>
</div>
</div>
yourApp.controller('stepCtrl',function($scope){
$scope.step = 1;
$scope.setStep = function(step){
$scope.step = step;
}
});
Auf diese Weise können Sie auch die URL bearbeiten, um einen Schritt am Ende Ihres aktuellen Standorts hinzuzufügen.
UPDATE:
Eigentlich ist diese Antwort vor für lange Zeit ist, diese Tage, die ich persönlich lieber ui-router verwenden, die ein großes Modul, mit dem Sie auf Ihre AngularJS Anwendung injizieren kann und machen es sogar mit verschachtelten kühlere Ansichten. Apropos verschachtelte Ansichten, unten ist mein neuer Ansatz für eine multystep Form mit einigen Animation:
Erstens:
Using $stateProvider declare any steps you want in separate views :
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('wizard', {// this will be the wrapper for our wizard
url: '/wizard',
templateUrl: 'wizard.html',
controller: 'wizardController'
})
.state('wizard.stepOne', {// this will be the wrapper for our wizard
url: '/stepOne',
templateUrl: 'stepOne.html',
controller: 'wizardController'
})
.state('wizard.stepTwo', {// this will be the wrapper for our wizard
url: '/stepTwo',
templateUrl: 'stepTwo.html',
controller: 'wizardController'
})
Dann später in unserem „wizard.html“ wir so etwas wie dieses haben kann:
<div id="container">
<div>
<h2>Our multistep form wizard</h2>
<div id="status-buttons" class="text-center">
<a ui-sref-active="active" ui-sref=".stepOne"><span>1</span> Step One</a>
<a ui-sref-active="active" ui-sref=".stepTwo"><span>2</span> Step Two </a>
</div>
</div>
<!-- Here we specify our view that is a container for our subviews(steps) , which in our case can be a form !-->
<form id="signup-form" ng-submit="submit()">
<!-- nested state views will be inserted here -->
<div ui-view></div>
</form>
</div>
Und offensichtlich für unsere Schritte müssen wir HTML-Dateien getrennt haben. Auf diese Weise haben wir immer noch einen Controller, URL wird aktualisiert, und wir können auch Winkelanimation hinzufügen.
Lesen [this] (http://stackoverflow.com/a/20029731/511374). –
Könnte helfen, eine bestimmte Frage mit Codebeispiel statt einer breiten Frage zu stellen. – lucuma
@lucuma Ich stimme zu. Wenn ich eine bestimmte Frage hätte, würde ich sie stellen. Aber ich suche nach einem Ansatz. Ich weiß einfach nicht, wie eine mehrstufige/assistentenartige Situation in angularjs gehandhabt wird, ohne verschiedene URLs zu verwenden. – whyceewhite