我有一个鼓励用户注册服务的主页。主页只有几个输入要填写。在新用户提交这些字段后,它们将被带到主注册页面,其中包含其余所需的输入。我在填写主注册页面上已提供的输入时遇到问题。
我已经读过在模板之间传输数据的最佳方法(甚至不更改控制器)是使用服务。我正在使用服务,但它们是$resource
服务,我无法弄清楚如何在模板之间保留未保存的$resource
。我无法保存$resource
,因为它还没有所有必需的信息。
app.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('welcome', {
url: '/',
templateUrl: 'views/welcome.html',
controller: 'CompanyCtrl'
})
.state('registerAccount', {
url: '/account/register',
templateUrl: 'views/account/register.html',
controller: 'CompanyCtrl'
});
});
angular.module('app')
.factory('Company', ['$resource', function ($resource) {
return $resource('http://localhost:3000/api/v1/company/');
}]);
angular.module('app')
.factory('Manager', ['$resource', function ($resource) {
return $resource('http://localhost:3000/api/v1/managers');
}]);
angular.module('app')
.controller('CompanyCtrl', ['Company', 'Manager',
function (Company, Manager) {
this.company = new Company();
this.manager = new Manager();
this.create = function() {
var params = {
company: this.company,
manager: this.manager
};
Company.save(params);
};
}
]);
答案 0 :(得分:0)
尝试创建服务以管理此步骤
angular.module('app').factory('ServiceRegisterManager' ['$resource', 'Company', 'Manager', function($resource, Company, Manager){
var steps: []
return {
saveTemporaryStep: function(step, data){
steps[step] = data
}
someValidateion: function(){...}
callMeOnFinalStep: function(){//Save your full data}
}
}])
答案 1 :(得分:0)
在this answer的帮助下,我决定了处理这两种资源的最佳方法。持久性工厂是将资源分成他们自己的API工厂,释放我的模型工厂供我使用,但是我喜欢。
angular.module('app')
.factory('Api', ['$resource',
function($resource) {
return {
Company: $resource('http://localhost:3000/api/v1/company/'),
Manager: $resource('http://localhost:3000/api/v1/managers')
};
}]);
angular.module('app')
.factory('Manager', function () {
return {};
})
.factory('Company', function () {
return {};
});
angular.module('app')
.controller('CompanyCtrl', ['Company', 'Manager', 'Api',
function (Company, Manager, Api) {
this.company = Company;
this.manager = Manager;
this.create = function() {
var params = {
company: this.company,
manager: this.manager
};
Api.Company.save(params);
};
}
]);