我的申請要求候選人設立機構和國籍(等等)。我想在全局變量中設置代理機構和國籍列表,以便可以通過配置文件屏幕訪問它們,而不是每次都從數據庫中檢索它們(因爲它們是當前的)。感謝這裏的其他問題,我到目前爲止...但一個關鍵的難題顯然缺失。數據正在從數據庫中檢索,但在其他地方不可見。
homecontroller.js它加載了數據...
//Home page Controller
function HomeCtrl($scope, $rootScope, SessionTimeoutService, GetAllAgencies, GetNationalityList){
GetAllAgencies.getData({}, function(agencieslist, $rootScope) {
SessionTimeoutService.checkIfValidLogin(agencieslist);
$rootScope.agencieslistglobal = agencieslist.data;
});
/* I tried hard-coding values here - that worked & was passed thro' ok
$rootScope.nationalitieslistglobal = [
{'nationality_id' : 0, 'name' : 'Unknown'},
{'nationality_id' : 1, 'name' : 'Known'},
{'nationality_id' : 2, 'name' : 'Pants'},
]; */
GetNationalityList.getData({}, function(nationalitieslist, $rootScope) {
SessionTimeoutService.checkIfValidLogin(nationalitieslist);
$rootScope.nationalitieslistglobal = nationalitieslist.data;
});
alert($rootScope.nationalitieslistglobal[8].name);
}
警報不火的。
從candidatescontroller.js:
function CandidatesAddCtrl($scope, CandidateModel, GetNationalityList, SessionTimeoutService, $http, GetAllAgencies, $rootScope) {
/* commented out as this should now be done globally - this works when it's in place
GetAllAgencies.getData({}, function(agencieslist) {
SessionTimeoutService.checkIfValidLogin(agencieslist);
$scope.agencieslist = agencieslist.data;
});
*/
CandidateModel.getBlankCandidate();
$scope.candidateinfo = CandidateModel;
// get global agencies list
$scope.agencieslist = $rootScope.agencieslistglobal;
alert($scope.agencieslist); // shows 'undefined'
/*
GetNationalityList.getData({}, function(nationalitieslist) {
SessionTimeoutService.checkIfValidLogin(nationalitieslist);
$scope.nationalitieslist = nationalitieslist.data;
});
*/
// get global nationalities list
$scope.nationalitieslist = $rootScope.nationalitieslistglobal;
....
}
所以......當我硬編碼的GetNationalityList.getData功能(即在上面的例子中註釋掉位)以外的數據,這是人口&通過確定&我的下拉列表填充。當我不這樣做時,$ rootScope值是'未定義'。
我有2個理論 -
莫名其妙HomeController的$ rootScope是不被認可,因爲我打算在全球(這是可變的只是名字)和其他一些「回傳」行動需要採取(我已經嘗試了幾個變化「return nationalitieslist.data」並將其分配給其他變量/句柄)。此外,nationalitieslist.data與硬編碼列表格式相同,只是時間更長。
我被javascript的異步性質所吸引,當我加載第二頁時,數據就不存在了。我不相信這是正確的,因爲數據庫調用正在完成,我有一個警告,顯示我一個隨機的國籍名稱,它在那裏。
我的一部分挫折從事實GetNationalityList和GetAllAgencies代碼段工作,並在候選控制器正確賦值(即現在註釋掉位),但在HomeController的微妙不同的工作來。
重要提示,請任何人?