$scope.$on('$routeChangeSuccess'..) 和在 scope 函数中调用方法

What's the difference between $scope.$on('$routeChangeSuccess'...) and calling a method in the scope function?

本文关键字:scope 调用 函数 方法 on routeChangeSuccess 和在      更新时间:2023-09-26

我从AngularJS开始,我有一个与设置新控制器时调用方法的方式有关的问题。

假设我配置了这样一条路由:

$routeProvider.when('/myApp/:id', {controller: 'MyAppCtrl'});
  • 这两个控制器代码在执行上下文和$scope生命周期方面有什么区别?

  • 加载部分后,每个备选方案运行多少次?

.

app.controller('MyAppCtrl',function($scope,$routeParams){
    $scope.$on('$routeChangeSuccess', function(){
        $scope.data = getNewData($routeParams.id);
    });
    function getNewData(id){
        ...
    }
});

和:

app.controller('MyAppCtrl',function($scope,$routeParams){
    $scope.data = getNewData($routeParams.id);
    function getNewData(id){
        ...
    }
});

谢谢。

在我看来,我会在路由配置中使用 resolve 而不是您的 2 个选项

回到你的问题。

我相信控制器在加载部分后只执行一次。

这两个案例几乎在做同样的事情。第一个依赖于事件,与第二个相比,这是一个额外的步骤。

$on将侦听器分配给事件。这意味着您可以通过发送$broadcast('routeChangeSucess')手动触发$on。

第二个代码运行一次,一旦加载了部分代码。

因此,将$on用于控制器负载对您没有任何好处