如何刷新页面以使用 angular 从服务中获取新值?
how to refresh page to fetch new values from service using angular?
我有一个页面有 1 个 table 和 2 个图表,我如何在按下刷新按钮时刷新我的图表和 tables,因为我的 table 和 2 个不同图表来自单个页面上的 3 个不同的控制器。我想刷新所有这些,以便他们能够再次从网络服务中获取新值,并通过单击或单个刷新按钮相应地重新创建页面。
我也尝试了一些想法。
$scope.refreshChart = function(){
alert("refresh");
// $scope.dashloader = true;
$state.go('plm.creator');
// $scope.dashloader = false;
console.log("On page refresh called; not from dashboard page");
}
但是这些并没有按照我的预期工作,请帮助
您可以使用此方法重新加载整个页面:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
但我不建议这样做,我想你可以根据工厂的数量进行一些重构,最终得到一个控制器。
你可以尝试的一件事是使用 $scope.$broadcast(name, args) 来广播所有控制器都可以监听的事件(事件名称只是你组成的字符串)然后 运行 他们的代码要刷新。
控制器用$scop.$on(event, listener)监听
所以一个控制器会这样做:
$scope.$broadcast('MyRefreshEvent', args);
另一个控制器会这样做:
$scope.$on('MyRefreshEvent', function (args) {
//handle refresh
});
我有一个页面有 1 个 table 和 2 个图表,我如何在按下刷新按钮时刷新我的图表和 tables,因为我的 table 和 2 个不同图表来自单个页面上的 3 个不同的控制器。我想刷新所有这些,以便他们能够再次从网络服务中获取新值,并通过单击或单个刷新按钮相应地重新创建页面。
我也尝试了一些想法。
$scope.refreshChart = function(){
alert("refresh");
// $scope.dashloader = true;
$state.go('plm.creator');
// $scope.dashloader = false;
console.log("On page refresh called; not from dashboard page");
}
但是这些并没有按照我的预期工作,请帮助
您可以使用此方法重新加载整个页面:
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
但我不建议这样做,我想你可以根据工厂的数量进行一些重构,最终得到一个控制器。
你可以尝试的一件事是使用 $scope.$broadcast(name, args) 来广播所有控制器都可以监听的事件(事件名称只是你组成的字符串)然后 运行 他们的代码要刷新。
控制器用$scop.$on(event, listener)监听
所以一个控制器会这样做:
$scope.$broadcast('MyRefreshEvent', args);
另一个控制器会这样做:
$scope.$on('MyRefreshEvent', function (args) {
//handle refresh
});