2

У меня есть два контроллера, где я делать почти то же самое, только немного изменить вещи в них, у меня есть это:Ошибка Вызывается функция из директивы внутри функции в контроллере

app.controller('CreateSignerCtrl', ['$scope','SweetAlert','SignerResource','$http', '$location', '$routeParams','$timeout','ngDialog', function ($scope, SweetAlert, SignerResource, $http, $location, $routeParams, $timeout,ngDialog) { 
      $scope.title = "Add Signer"; 
      $scope.button = "Save"; 
      $scope.Signer = {}; 
      $scope.cancel = ngDialog.closeAll; 

      $scope.saveSigner = function() { 
       SignerResource.save($scope.Signer); 
       $.notify({ 
        title: '<strong>Data Updated! </strong>', 
        message: 'Signer Updated.' 
       },{ 
        type: 'success', 
        placement: { 
         from: 'bottom', 
         align: 'right' 
        }, 
        animate: { 
         enter: 'animated fadeInDown', 
         exit: 'animated fadeOutUp' 
        } 
       }); 
       ngDialog.closeAll(); 
       $scope.getModelData(); 
      }; 
      $scope.save = $scope.saveSigner; 
     }]); 

В этом контроллере когда я назвал функцию $ scope.saveSigner я получаю эту ошибку:

TypeError: $scope.getModelData is not a function 

И в этом контроллере:

app.controller('EditSignerCtrl', ['$scope','SweetAlert','SignerResource','$http', '$location', '$routeParams','$timeout','ngDialog', function ($scope, SweetAlert, SignerResource, $http, $location, $routeParams, $timeout,ngDialog) { 
     $scope.title = "Edit Signer"; 
     $scope.button = "Update"; 
     $scope.Signer = SignerResource.get({ 
      id: $scope.signerId 
     }); 
     $scope.cancel = ngDialog.closeAll; 

     $scope.updateSigner = function() { 
      SignerResource.update($scope.Signer); 
      $.notify({ 
       title: '<strong>Data Updated! </strong>', 
       message: 'Signer Updated.' 
      },{ 
       type: 'success', 
       placement: { 
        from: 'bottom', 
        align: 'right' 
       }, 
       animate: { 
        enter: 'animated fadeInDown', 
        exit: 'animated fadeOutUp' 
       } 
      }); 
      ngDialog.closeAll(); 
      $scope.getModelData(); 
     }; 

     $scope.save = $scope.updateSigner; 
    }]); 

В этом контроллере все выполнено нормально и $ scope.getModelData не присылайте мне никаких ошибок.

Директива заключается в следующем:

app.directive('datapaginator', function() { 
    return { 
    url: '=a', 
    controller: function($scope, $http) { 

     $scope.model = []; 

     $scope.getModelData = function() { 
      $http({ 
       url: $scope.url, 
       method: "GET", 
       params: {page: $scope.currentpage || 1} 
      }).success(function(data, status, headers, config) { 
       if($scope.currentpage > data.last_page){ 
        $scope.currentpage = data.last_page; 
        $scope.getModelData(); 
       } 
       $scope.currentpage = data.current_page; 
       $scope.lastpage = data.last_page; 
       $scope.generatePages(data.last_page); 
       $scope.model = data.data; 
      }).error(function(response) { 
       $scope.model = response.error; 
      }); 
     }; 
}); 

Эта функция ($ scope.getModelData) выполняется много раз, в другом контроллере и выполняется без проблем.

+0

Кажется, что $ scope в контроллере CreateSignerCtrl не наследуется от вашей директивы. Не лучше ли переместить функцию getModelData в службу? –

+0

Возможно, эта функция является стандартной функцией, которая будет использоваться с любой моделью, анализирующей URL-адрес от первого контроллера модели или Сервиса. – CrafterSama

ответ

0

Я думаю, что ваша директива datapaginator не входит внутри ** CreateSignerCtrl ** но он включен в вашем EditSignerCtrl.

You should check your markup to see if you are including your directive in both your controllers.

However, I do think you should move your getModelData function to a service instead.

Прочитано this. Надеюсь, что смогу помочь :)

+0

не так ли, директива не включена ни в один из контроллеров – CrafterSama

+0

Не могли бы вы добавить свою разметку на вопрос? – atefth

+0

Я пытаюсь обновить свой взгляд или представление, которое у меня есть в этот момент – CrafterSama

Смежные вопросы