好的,我的问题有三个相关文件..
App.js - app.config
使用app.config
resolve
中的$stateParams
传递值是可能的,我就可以实现。但价值来自controller
?我需要provCode
值才能在php select query
中使用它。
.state("editStudent", {
abstract: true,
url:"/student/:id",
controller: "EditStudentController",
templateUrl: "views/students/editStudent.html",
resolve: {
dataservice: 'dataservice',
student: function(dataservice, $stateParams){
var data ={
id : $stateParams.id
};
return dataservice.getStudent(data);
},
provinceData: function(dataservice){
return dataservice.getProvince();
},
municipalityData: function(dataservice){
var provCode = {
provCode : '0456' // <--------------------- this one
}
return dataservice.getCity(provCode);
}
}
})
EditStudentController.js - app.controller
在我的app.controller
中,我使用angular.forEach
查找province
code
或id
来使用php select query
。正如您所看到的,我尝试创建函数app.getCity
但它没有按预期工作。
console.log(provinceData);
$scope.provinceData = provinceData;
var retProv = $scope.studentInfo.province;
angular.forEach(provinceData, function(value, key) {
if(value.provDesc == retProv){
$scope.studentInfo.province = provinceData[key];
$scope.provCode = provinceData[key].provCode;
console.log($scope.provCode);
}
}); // angular.forEach
var provCode = $scope.provCode;
// Test if it is working but sadly, it is not
// $scope.getCity = function(){
// dataservice.getCity(provCode);
// }
Dataservice.js - app.factory
在我的app.factory
中,目前有3个功能。其他2个函数可以正常工作,但factory.getCity()
现在是我的问题。如您所见,有一个参数provCode
,此参数来自我的app.config
state
resolve
,并且已为其分配了硬编码/静态值。
factory.getStudent = function(data){
return $http.post("php/students/viewOneStudent.php",data).then(function(response){
student = response.data[0];
console.log(student);
return student;
})
}
factory.getProvince = function(){
return $http.get('php/address/province.php').then(function(response){
provinceData = response.data;
console.log(provinceData);
return provinceData;
})
}
factory.getCity = function(provCode){
return $http.post('php/address/cities.php', provCode).then(function(response){
municipalityData = response.data;
console.log(municipalityData);
return municipalityData;
})
}
我的问题是:
controller
传递到resolve
?注意
我试图在没有resolve
的情况下执行此操作,获取数据并再次发布php querying
,它也有效但问题是有时加载view
时数据无法加载。据我所知,从互联网上的不同来源阅读和理解,有一段时间view
已加载,但“处理数据的工作”尚未完成..
我很新,还在学习AngularJs。当我练习和学习AngularJs编码时,我喜欢它的工作原理,尤其是routing
,我对它印象深刻。所以,我正在努力了解AngularJs及其复杂性。
更新 我尝试了不同的方法来获得预期的结果。但我无法达到它,我遇到了一个错误。这是我的另一种方法的链接。