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에 추가하십시오. 이것은 가능한가? 감사합니다.
너무 감사합니다! 나는 이것이 이상적이지는 않지만 내 요구에 완벽하게 부합하며 아마 다시는 결코 만질 수 없을 것이라고 생각합니다. 유일한 문제는 $ scope에 저장되는 것이 아무것도 없다는 것입니다. 그 이유는 무엇입니까? 도와 주셔서 다시 한 번 감사드립니다! –
예. 편집 됨. 이제, 데이터를 저장할 수 있습니다 ... – bigless
방금 시간을 많이 절약했습니다! 정말 고맙습니다! –