$ scope($' $ routeChangeSuccess' ...)和调用范围函数中的方法之间的区别是什么?

时间:2015-01-20 15:40:59

标签: javascript angularjs

我从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){
        ...
    }
});

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

回到你的问题。

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

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

答案 1 :(得分:0)

$ on为事件分配监听器。含义您可以通过发送$ broadcast('routeChangeSucess')手动触发$。

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

所以使用$ on来获得一个控制器负载不能做任何好事