私は自分のアプリケーションに「bionico」と呼ばれるメイン アプリを持っています。このアプリは UI ルーターを利用しています。独自の $stateProvider 構成があります。そしてそれは大丈夫です、それは動作します
しかし、新しいモジュールを作成する必要がありました (アプリケーションにステップバイステップのフォームを挿入しようとしているため、コードはこちらにあります: https://scotch.io/tutorials/angularjs-multi-step- form-using-ui-router )
このステップバイステップのフォームを作成するには、独自の $stateProvider 構成で新しいモジュールを作成する必要があります。問題は、それが機能しないことです。「bionico.formApp」と呼ばれるこのモジュールを、このようにメイン アプリに含めました。 :
angular.module('bionico', ['ui.router', other modules, 'bionico.formApp'])
「bionico.formApp」内でコントローラーを使用しようとすると、正常に動作します。これは、このモジュールのコードです:
// create our angular app and inject ngAnimate and ui-router
// =============================================================================
angular.module('bionico.formApp', ['ngAnimate', 'ui.router', ])
// configuring our routes
// =============================================================================
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('form', {
url: '/form',
templateUrl: 'templates/campaignForm/form.html',
controller: 'formCtrl'
})
// nested states
// each of these sections will have their own view
// url will be nested (/form/profile)
.state('form.profile', {
url: '/profile',
templateUrl: 'templates/campaignForm/form-profile.html'
})
// url will be /form/interests
.state('form.interests', {
url: '/interests',
templateUrl: 'templates/campaignForm/form-interests.html'
})
// url will be /form/payment
.state('form.payment', {
url: '/payment',
templateUrl: 'templates/campaignForm/form-payment.html'
})
// catch all route
// send users to the form page
$urlRouterProvider.otherwise('/form/profile');
})
// our controller for the form
// =============================================================================
.controller('formCtrl', function($scope) {
// we will store all of our form data in this object
$scope.formData = {};
$scope.test = "FUNCIONA";
// function to process the form
$scope.processForm = function() {
alert('awesome!');
};
});
しかし、このフォームを機能させるには、使用する必要があり、<div ui-view></div>
これをファイルに配置しても何も起こりません。アプリがメインモジュール「bionico.formApp」ではなく、「bionico」$stateProvider 構成を使用しているためだと思います。
ここに私のHTMLコードがあります:
<div ng-controller="formCtrl">
<!-- views will be injected here -->
<div ui-view></div>
{{test}}
formCtrl の {{test}} は正常に動作し、画面に変数を出力していますが、私が言ったように ui-view はそうではありません。メインモジュールの構成ではなく、「bionico.formApp」構成を使用したいことを角度に伝える方法はありますか? これをどのように解決しますか?
その瞬間から「bionico.formApp」を使用したいが、その方法がわかりません。試してみまし
<div ng-app="bionico.formApp">
たが、何も起こりませんでした。エラーもありませんでした
その後、スタックオーバーフローで手動でブートストラップする必要があることを確認しましたが、「bionico.formApp」が既にブートストラップされているというエラーが表示されました
アップデート
人々は、1 つのモジュールだけでルーティングする必要があると提案しましたが、メイン アプリケーションとフォーム用に 1 つずつ、2 つの異なるデフォルト ルーティングが必要でしたが、それはうまくいきませんでした。そして、私がこれを機能させようとした理由は、アプリケーションに次のようなステップバイステップのフォーム (ウィザード) が必要だったからです: https://scotch.io/tutorials/angularjs-multi-step-form-using- ui ルーター)
しかし、私は面倒な価値がないと判断しました.Angular jsの別のウィザードを見つけようとします.
私は今、このウォークスルー ウィザードを使用しています: https://github.com/mgonto/angular-wizard
インストールは簡単で、テンプレートのカスタマイズも非常に簡単で、お勧めです!