保存表單數據
回答
從我所看到的,你用2個不同的控制器對每個視圖(或一個觀點,沒有根視圖)。
問題是Angular無法像這樣在控制器之間共享數據。
要麼你必須使用一個服務/工廠,或使用rootscope,但不是像你一樣,而與broadcast
和emit
如果我是你,我會使用的服務。
編輯在這裏,你走了,一個爲您服務:
(function() {
'use strict';
angular
.module('YourModuleName')
.factory('CountriesService', CountriesService);
CountriesService.$inject = ['Your', 'dependencies', 'here', 'in', 'string'];
/* @ngInject */
function CountriesService(your, dependencies, here, not, in, string) {
var service = {
setCountries: setCountries,
getCountries: getCountries
};
var vm = this;
vm.countries = []; // Or maybe an object ?
// ... List of other variables you need to store.
return service;
////////////////
function setCountries(listOfCountries) {
vm.countries = listOfCountries;
}
function getCountries() {
return vm.countries;
}
}
})();
這將存儲您的變量。在您的控制器中,您添加CountriesService
作爲依賴項,以節省您的使用CountriesService.setCountries
並加載您使用CountriesService.getCountries
。請注意,刷新頁面將刪除所有數據!
EDIT 2號 如果你害怕的John papa guidelines,這裏是一個簡單的服務,您可以在同一文件中使用你把你的控制器:
app.factory('CountryControl', function(your, dependencies) {
var service = {
setCountries: setCountries,
getCountries: getCountries
};
this.countries = []; // Or maybe an object ?
// ... List of other variables you need to store.
return service;
////////////////
function setCountries(listOfCountries) {
this.countries = listOfCountries;
}
function getCountries() {
return this.countries;
}
});
我只有1個控制器,並將其傳遞給routeProvider以獲取詳細信息頁面。我真的不知道如何從我的代碼中設置服務。你能提供一些例子嗎?順便說一句,我應該上傳我的整個網站文件夾的地方給你看?也許當你看到你面前的頁面時會更容易。 –
Nah我很好,我會在那裏發佈一個服務,告訴你如何使用它。你應該深入研究,你會在網上找到很多教程。好吧,等一下,我會編輯我的答案。 – trichetriche
@rickastley在這裏你去看看編輯。 – trichetriche
我有一個應用程序,這是否更或更少。一項服務很好地修復了這一點,並創建了一種機制,以便您可以在應用中的任何位置執行此操作。
首先,我會建議不要試圖用範圍來管理這個。只需在你的控制器(myFormObj)上添加一個對象,並添加你想要的屬性(名稱,等級,序列號等)。
然後將表單的輸入字段綁定到該對象中的屬性(與範圍變量相反)。所以你的ng模型的東西看起來像myCtl.formObj.name,等等。
當用戶觸發改變視圖的事件時,通常在Service中(保存FormStateService或其他東西)將formObj的COPY(angular.copy)保存到旁邊。 FormStateService只能保存一個簡單的數組。
this.forms = { 'TheNameOfYourForm' : theFormObjToSave };
因此,當用戶觸發離開形式的情況下,你只是這樣做:
formStateSvc.forms [ 'NameOfMyForm'] = angular.copy(theFormObj);
當用戶回來原來的視圖和控制器初始化,你剛纔問formStateSvc:
if ('NameOfMyForm' in formStateSvc.forms) {
this.formObj = formStateSvc.forms [ 'NameOfMyForm' ];
}
瞧,你的舊形式的狀態恢復。您可以創建「addForm,removeForm」等方法,您可以確保不會發生類似未定義的事情,並且可以使重新綁定到以前的狀態隱式(當您的表單的控制器啓動時,只需要讓它恢復狀態如果有任何恢復)。所以你的控制器只會有:
this.formObj = formStateSvc.rebindOldDataIfItExists('MyFormName');
你明白了。
一種簡單的方法是創建一個值提供對象併發布關於範圍:
//Create value provider object
app.value("FormObj", {});
app.controller("myController", function($scope, FormObj) {
//Publish on scope
$scope.FormObj = FormObj;
});
然後讓ng-model
指示使用該對象:
Name <input ng-model="FormObj.name"><br>
Rank <input ng-model="FormObj.rank"><br>
SerialNum <input ng-model="FormObj.ssnum"><br>
值對象是一個單獨的,其堅持應用程序的生命。對象內容的更改將被保留並可供其他控制器使用,並將在視圖更改後繼續存在。
- 1. 保存表單字段爲sql數據庫 - 只保存數字?
- 2. 如何保存(暫時)表單數據?
- 3. cakephp表單助手:數據不保存
- 4. 保存表單數據永久
- 5. 地方表單數據並保存
- 6. 在Django保存表單數據
- 7. Django覆蓋表單數據保存
- 8. 保存表單集合中的數據
- 9. 保存多個選擇表單數據
- 10. Firefox操作保存的表單數據
- 11. 保存表單中的數據
- 12. Symfony2通過Ajax保存表單數據
- 13. 保存表單數據和會話
- 14. 保存HTML表單數據到數據庫 - Django的
- 15. Ajax表單數據沒有保存在數據庫中
- 16. 無法將表單數據保存在數據庫中 - Django
- 17. 使用Django表單將數據保存到數據庫
- 18. Django表單數據不會保存到數據庫(sqlite)
- 19. 輸入表單數據不保存在mysql數據庫中?
- 20. 將數據從多頁表單保存到數據庫Wordpress
- 21. Django FormPreview:將表單數據保存到數據庫
- 22. rails表單數據沒有被保存到數據庫中
- 23. 保存數據到態表
- 24. 保存表格數據
- 25. 保存到數據表csv
- 26. 數據庫表保存URL
- 27. 保存數據表到數據庫
- 28. 將HTML表單數據保存到本地存儲
- 29. 將Sitefinity表單模塊數據保存到單獨的數據庫
- 30. 如何將數據從HTML表單保存到WordPress的數據庫表中?
還沒有能夠解決這個問題。我不想重新制作我的整個webapp,只是爲了能夠以某種方式保存表單輸入。必須有一個快速的方法來做到這一點。任何幫助表示讚賞! –