0
因此,我試圖將數據從網站的首頁形式傳遞到網站上的應用程序,用戶可以在其中填寫一些附加信息。使用服務在Angular中的不同應用程序的控制器之間傳輸數據
我的問題是,我每次從信息獲得服務對象後,它是undefined
。當對象被設置時,我可以console.log()
,這是正確的。
任何想法,我可能做錯了什麼?我假設這是因爲我認爲服務被注入時會創建一個新的實例。我怎樣才能讓數據持久?
我有頭版形式:
<div id="zipcodeForm" ng-app="form">
<form name="zipcodeLookup" ng-controller="FormCtrl" novalidate="true" ng-submit="zipcodeLookup.$valid && submitForm()">
<div class="error" ng-show="zipcodeLookup.$dirty && zipcodeLookup.$invalid">
<span ng-show="zipcodeLookup.zipcode.$error.pattern || zipcodeLookup.zipcode.$error.required === true">Please enter a valid zip code.<br /></span>
<span ng-show="zipcodeLookup.residence.$error.required === true">Please choose a residency type.</span>
</div>
Enter Zipcode:
<input type="text" id="zipcode" name="zipcode" required="true" ng-pattern="/^\d{{5}}(-\d{{4}})?$/" ng-model="zipcode" ng-model-options="{{debounce: 1000}}"/><br />
<input type="radio" name="residence" value="residential" ng-model="residence" ng-required="!residence"/> Residential
<input type="radio" name="residence" value="business" ng-model="residence" ng-required="!residence" /> Business
<br />
<input type="submit" id="submitButton" value="Submit" />
</form>
</div>
應用程序定義:
var app = angular.module('app', ['ui.router','formService']);
var formApp = angular.module('form', ['formService']);
表單控制器:
formApp.controller('FormCtrl', ['$scope', '$element', 'FormService', function($scope, $element, formService) {
$scope.zipcode = "";
$scope.residence = "";
$scope.submitForm = function() {
var obj, object, data = $element.serializeArray();
obj = {};
for (object in data) {
obj[data[object].name] = data[object].value;
}
formService.set(obj);
window.location = '/application';
};
}]);
首頁控制器:
app.controller('HomeCtrl', ['FormService', function(formService) {
var data = formService.get();
console.log(data);
}]);
服務:
angular.module('formService', [])
.factory('FormService', function() {
var savedData = {};
function set(data) {
savedData = data;
}
function get() {
return savedData;
}
return {
set: set,
get: get
};
});
這兩個應用程序在單獨的頁面上,這是一種奇怪的場景。我們的CMS在主頁上使用XSLT,我有一個具有表單的模板,然後我有另一個頁面,它是使用另一個具有第二個應用程序(使用angular-ui路由)的XSLT模板的應用程序。所以我真的不認爲有一種方法可以讓他們在同一個應用程序中,但如果我錯了,隨時糾正我。 – 2014-11-21 21:01:02
那麼它是不是一個角度的限制,但是HTML文件的性質。您可以選擇通過本地存儲,cookie保存數據,甚至通過url傳遞信息。每種策略都有其侷限性。節省的方法是將數據作爲會話數據或數據庫保存在Web服務器上。 – 2014-11-21 21:54:43