Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';$scope.$on(';$routeChangeSuccess';…)与在scope函数中调用方法之间的区别是什么?_Javascript_Angularjs - Fatal编程技术网

Javascript 什么';$scope.$on(';$routeChangeSuccess';…)与在scope函数中调用方法之间的区别是什么?

Javascript 什么';$scope.$on(';$routeChangeSuccess';…)与在scope函数中调用方法之间的区别是什么?,javascript,angularjs,Javascript,Angularjs,我从AngularJS开始,我有一个问题与设置新控制器时调用方法的方式有关 假设我有一个如下配置的路由: $routeProvider.when('/myApp/:id', {controller: 'MyAppCtrl'}); 关于执行上下文和$scope生命周期,这两个控制器代码之间有什么区别 加载分部后,每个备选方案运行多少次 以及: 非常感谢。在我看来,我会在路由配置中使用resolve,而不是您的两个选项 回到你的问题上来 我相信控制器只在部分加载后执行一次 这两个案例做的几乎

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

假设我有一个如下配置的路由:

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

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

以及:


非常感谢。

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

回到你的问题上来

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


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

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

加载分部代码后,第二个代码将运行一次


因此,使用$on加载控制器对您没有任何好处

非常感谢。我刚刚了解了决心,这澄清了我的疑问。这两个回答都回答了我的问题,但我将此标记为答案,因为它在路由配置中使用resolve时提供了更多帮助,从而解决了我的问题。再次感谢@msohns和maxisam。
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){
        ...
    }
});