[英]Sharing unsaved $resource between controllers in Angular.js
我有一個主頁,鼓勵用戶注冊服務。 主頁上只有幾個輸入要填寫。 新用戶提交這些字段后,它們將與其余必填輸入一起進入主注冊頁面。 我在填寫主要注冊頁面上已提供的輸入時遇到問題。
我讀過,在模板之間傳輸數據的最佳方法(甚至不更改此控制器)是使用服務。 我正在使用服務,但它們是$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);
};
}
]);
嘗試創建服務來管理此步驟
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}
}
}])
在這個答案的幫助下,我決定處理資源和持久工廠的最佳方法是將資源分離到自己的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);
};
}
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.