angularjs控制器执行两次

8 浏览
0 Comments

angularjs控制器执行两次

这里曾经有一个类似的问题但它对我没有帮助。

我正在学习AngularJS,并注意到控制器被执行两次。

我有一个非常简单的示例,展示了这种行为在这里

我构建这个示例时,正在学习有关服务的内容,并且最初我认为是将服务注入控制器,但我注释了所有与服务相关的代码,控制器仍会执行两次。

我的示例运作正常,但我担心我在做错什么。

    {{data1}} 
var app = angular.module('MyApp', [])
app.service('Service1', function(){
  return {
    ajxResponse1: 'dataFromService1'
  };
 });
function MyCtrl($scope, Service1){
  alert('Entering MyCtrl');
  $scope.data1 = Service1.ajxResponse1;    
  alert('Exiting MyCtrl');
}

admin 更改状态以发布 2023年5月21日
0
0 Comments

您的控制器在fiddle中运行了两次,因为angular被重复引用了(一次通过Framework & Extensions下拉菜单,另一次是作为External Resource)。

请查看更新的fiddle,我已经删除了External Resource,现在警报只会出现一次。

代码保持不变:

function MyCtrl($scope, Service1, Service2, Service3){
    alert('Entering MyCtrl');
    $scope.data1 = Service1.ajxResponse1;
    $scope.data2 = Service2.ajxResponse2;
    $scope.data3 = Service3.ajxResponse3;
    alert('Exiting MyCtrl');
}

0
0 Comments

有可能的来源是这样的:如果您正在使用Routing并在路由中指定控制器,则不能在使用该路由的模板中指定控制器。当忽视了这一点时,我们就会遇到这个问题。

0