对话框中的AngularJS函数调用了好几次

时间:2017-08-07 23:58:23

标签: javascript html angularjs

请参阅此代码。

html代码

<script type="application" id = "abc">
  <md-dialog>
    {{loadServerFile();}}
  </md-dialog>
</script>

javascript代码

    loadServerFile : function(){
      $.ajax({
       url: "/homepage/create"
       success: function(){
          console.log("success");
          $scope.closeDialog();
        }
      });
    }

此处closeDialog关闭id = 'abc'对话框。

console.log("success")来电的次数超过了10次。

为什么会出现这种问题? 如何调用此函数一次?

javascript代码

angular.module("imageedit").service('canvas',['$rootScope','$mdDialog'],function($rootScope, $mdDialog){
...
start: function(url){
$mdDialog.show({
   template: $('abc').html()
   controller: 'GGG'
   clickOutsidetoClose: false,
   })
   ...
 }
   ...
})

我在这里打电话给$mdDialog.show来调用对话框。 但实际上我只想在loadServerfile控制器中调用GGG。 你有答案吗? 我期待的是:$rootScope.call(loadServerFile);

2 个答案:

答案 0 :(得分:0)

根据新信息,不想要对话,在GGG控制器中添加此代码,该代码将运行一次。它会将调用结果放在$scope.homepageCreateResult中。如果您根本不需要进行此调用,并且不需要该对话框,请删除您引用的所有代码。

   $scope.homepageCreateResult = {};
   $http.get("/homepage/create")
        .then(function(resp) {
            console.log('success', resp);
            $scope.homepageCreateResult = resp.data;
        });

在您的HTML中,只需删除所有内容:

<script type="application" id = "abc">
  <md-dialog>
    {{loadServerFile();}}
  </md-dialog>
</script>

答案 1 :(得分:-1)

在许多代码中,closeDialog函数只隐藏对话框而不是真正关闭对话框 showDialog可以多次调用 您无法看到,但根据您的问题,console.log被多次调用,因此我的期望是正确的。