0
多段階のフォームを作成しなければならず、プロセスを単純化しようとしています。私がしたいのは、各ステップ(状態)をjsonデータを介して動的に生成することです。各ステップには、入力フィールドだけの非常に基本的なレイアウトがあります。このため、テンプレートを動的に作成することさえ理想的です。
この
は、私は限り実際の作業を単純な形式として持っているものです。angular.module('formApp', ['ui.router'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('form', {
url: '/form',
template: '<div>{{formData}}</div><ui-view></ui-view>',
controller: 'formCtrl'
})
.state('form.name', {
url: '/name',
template: '<h3>{{title}}</h3><input type="text" ng-model="formData.name"><a ui-sref="form.phone">next</a>',
controller: 'nameCtrl'
})
.state('form.phone', {
url: '/phone',
template: '<h3>{{title}}</h3><input type="text" ng-model="formData.phone"><a ui-sref="form.zip">next</a>',
controller: 'phoneCtrl'
})
.state('form.zip', {
url: '/zip',
template: '<h3>{{title}}</h3><input type="text" ng-model="formData.zip">',
controller: 'zipCtrl'
});
$urlRouterProvider.otherwise('/form/name');
})
.controller('formCtrl', function($scope){
$scope.formData = {};
})
.controller('nameCtrl', function($scope){
$scope.title = 'Please Enter your Name';
})
.controller('phoneCtrl', function($scope){
$scope.title = 'Please Enter your Phone Number';
})
.controller('zipCtrl', function($scope, $http){
$scope.title = 'Please Enter your ZipCode';
});
そして私は、JSONデータを読み込み、このループを持っている、それが動作し、私が必要なものを正確にconsole.logs
$http.get('data.json').then(function(res){
var pages = res.data.pages;
for(page of pages){
var title = page.title;
var alias = page.alias;
var sref = page.sref;
var dynamicString = '.state("form.' + alias + '", {' +
'url: ' + alias + ',' +
'template: ' +
'<h3>' + title + '</h3>' +
'<input type="text" ng-model="formData.' + alias + '">' +
'<a ui-sref="' + sref + '">next</a>",' +
'controller: ' + alias +
'})' + dynamicString;
}
});
は、最後にここに私のJSONは
{ "pages":
[
{
"title": "Whats Your Name?",
"alias": "name",
"sref": "phone"
},
{
"title": "Whats Your Phone Number?",
"alias": "name",
"sref": "zip"
},
{
"title": "Whats Your Zip Code?",
"alias": "zip",
"sref": "redirect"
}
]
}
である。しかし、今、私はLOにそれを得ることに続行するか見当がつかない広告を$ stateproviderに追加します。これも可能ですか? ありがとう!
はありがとうございました!私はこれが理想的ではないことを知っていますが、それは私のニーズに完全に対応し、恐らく再び触れることはありません。唯一の問題は、$ scopeに何も格納されていないことです。その理由は何ですか?あなたの助けをもう一度ありがとう! –
はい。編集されました。今、それはデータを保存することができます... – bigless
あなたは私に多くの時間を救った!どうもありがとうございます! –