我有一个有角度的应用程序,我正在尝试刷新页面。我按照许多帖子中的建议尝试$route.reload()
。但我无法让它工作(Chrome给我一个错误)。这是我的控制器:
var app = angular.module('StudentProgram', ['ngRoute', 'ui.bootstrap', 'jsonService']);
app.controller('mycontroller', function($route, RequirementsService, DegreesService, DegreeCategoriesService, DetailsService, ProgramsService, $scope, $modal, $log, $http) {
ProgramsService.getItems(function(data){
$scope.programs = data;
console.log(data);
});
$scope.addDegree = function(degree) {
var variablesToSend = {
"acad_program_type": degree.acad_program_type,
"program_title": degree.program_title,
}
}
$http.post('/api/studentacademicprogram/', variablesToSend).then(function(response){
console.log(response);
alert('post added');
$route.reload();
}, function(response){
console.log(response);
alert('post not added');
});
};
这是我访问该功能的div:
<div ng-show="display.academicdegrees" class="col-lg-8 col-md-8 col-sm-8">
<div class="panel panel-warning list-group list-unstyled" data-spy="scroll" data-target="#panelcategory" data-offset="0" style="max-height:400px;overflow:auto;position:relative;">
<div class="panel-heading">
{% verbatim %}
<h3 class="panel-title">{{DegreeCategory}}</h3>
{% endverbatim %}
</div>
</div>
</div>
我在哪里犯这个错误?当我点击刷新按钮时页面会刷新,但是当我调用该功能时它不会发生。
答案 0 :(得分:5)
使用
$ window.location.reload()而不是 $ route.reload()
这应该解决。
答案 1 :(得分:1)
您必须确保在index.html中包含angular-route.js(或缩小版本)才能在模块中使用ngRoute。
答案 2 :(得分:1)
使用$route.reload()
您应该注意到$route
取决于$location
和$routeParams
,因此您必须在控制器中注入主题。 (reference)
答案 3 :(得分:0)
如果要将其添加到列表中,您不想刷新页面,则将其推送到ng-repeat重新排列的阵列。在代码中执行此操作的好地方是成功回调,以便将资源添加到后端。
答案 4 :(得分:0)
app.factory('safeApply', [function($rootScope) {
return function($scope, fn) {
var phase = $scope.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if (fn) {
$scope.$eval(fn);
}
} else {
if (fn) {
$scope.$apply(fn);
} else {
$scope.$apply();
}
}
}
}]);
/*you have to use above created factory below your $route.reload();
Just Refer Below*/
$http.post('/api/studentacademicprogram/', variablesToSend).then(function(response){
console.log(response);
alert('post added');
$route.reload();
safeApply($scope);
}
/*As the scope is not being watched properly this issue happens */