.controller("selectStudentController",function($scope,$http){
$scope.showStudents = function(){
$http.post("selectStudent.php").then(function(response){
$scope.studentData = response.data;
})
}
})
.controller("saveStudentController",function($scope,$http){
$scope.saveIt = function(){
$http.post("saveNewStudent.php", {"sName" : $scope.sName,
"gender" : $scope.gender,
"salary" : $scope.salary,
"dob" : $scope.dob}
).then(function(response){
alert("Record Saved Successfully...");
$scope.showStudents();
})
}
})
嗨,这是我的代码。在这里,当我在记录保存成功... 消息后呼叫$scope.showStudents();
时无效。任何人都可以告诉我它里面的错误是什么。我的记录保存并选择正常,但我无法调用此功能。
答案 0 :(得分:2)
您有2个控制器selectStudentController
和saveStudentController
假设selectStudentController
不是saveStudentController
的父作用域(否则您的代码应该有效)
您无法直接从本地控制其他控制器的方法。
最佳做法是使用service
。将方法showStudents
逻辑放入可从两个控制器获得的服务中。
app.service('YourService', ['$http', function ($http) {
var self = this;
self.showStudents = function(){
return $http.post(
"selectStudent.php"
).then(function(response){
return response.data;
})
}
}]);
现在saveStudentController
看起来像是:
.controller("saveStudentController",function($rootScope, $scope,$http,YourService){
$scope.saveIt = function(){
$http.post("saveNewStudent.php",
{"sName":$scope.sName,
"gender" : $scope.gender,
"salary" : $scope.salary,
"dob" : $scope.dob
}
).then(function(response){
alert("Record Saved Successfully...");
$rootScope.$broadcast('showStudents', {});
})
}
})
selectStudentController
控制器:
.controller("selectStudentController",function($scope,YourService){
$scope.$on("showStudents", function (event, data) {
YourService.showStudents().then(function(response){
$scope.studentData = response.data;
})
});
})
saveIt
方法,您也可以投入服务
答案 1 :(得分:1)
您无法在不同的scope
controller
方法
您可以通过以下方式访问控制器中的方法,
$broadcast
和$emit
您的示例代码,
.controller("saveStudentController",function($scope,$http){
//here declare your method
$scope.showStudents = function(){
$http.post(
"selectStudent.php"
).then(function(response){
$scope.studentData = response.data;
})
}
$scope.saveIt = function(){
$http.post("saveNewStudent.php",
{"sName":$scope.sName,
"gender" : $scope.gender,
"salary" : $scope.salary,
"dob" : $scope.dob
}
).then(function(response){
alert("Record Saved Successfully...");
$scope.showStudents();
})
}
})
请检查同一问题here。
希望这会对你有所帮助。