我从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用于控制器负载对您没有任何好处