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"
}
]
}
但現在我不知道如何在它前往羅繼續廣告到$ stateprovider中。這甚至有可能嗎? 謝謝!
太謝謝你了!我知道這並不理想,但它完全適合我的需求,它可能永遠不會再被觸及。唯一的問題是什麼都沒有存儲到$範圍內,任何想法爲什麼這可能是?再次感謝你的幫助! –
是的。編輯。現在,它可以存儲數據... – bigless
你剛剛救了我這麼多時間!非常感謝! –