2016-03-29 5 views
0

Я вхожу в Angularjs. Я хочу снова использовать функцию, resetForm(). Мой вопрос: я все еще помещаю это в свой контроллер $scope или создаю фабрику или услугу?Где я могу разместить регулярные функции, Angularjs

app.controller('testController', [ 
     '$scope', 
     'testService', 
     function($scope, testService) { 

      $scope.addTestForm = function() { 
       var body = document.getElementsByTagName('body')[0]; 
       if (!body.classList.contains('test__add')) { 
        body.classList.add('test__add'); 
       } 
      }; 

      //do I add my function here? 
      function name() {}; 
     }]); 

ответ

0

если это resetForm() функция, то я предполагаю, что она имеет дело с DOM. Я бы предложил вам объявить эту функцию внутри вашего контроллера, так как вам понадобится доступ к $scope для сброса полей формы (прямой доступ DOM строго запрещен в AngularJS). Вы можете обратиться к ниже примеры кода

app.controller('testController', [ 
    '$scope', 
    'testService', 
    function($scope, testService) { 

     var resetForm = function() { 
      // your logic to reset form with help of $scope 
     }; 

     $scope.addTestForm = function() { 
      var body = document.getElementsByTagName('body')[0]; 
      if (!body.classList.contains('test__add')) { 
       body.classList.add('test__add'); 
      } 
     }; 

    }]); 

Примечание: Вам не нужно объявлять resetForm функцию $scope.resetForm, если вы не планируете вызывать его из файла шаблона.

0

Если вы хотите повторно использовать его на нескольких контроллерах, фабрика или служба, вероятно, лучший способ разделить его без дублирования кода. Затем вы можете вызвать один из них со всех ваших контроллеров.

Дополнительные преимущества этого шаблона заключаются в том, что вы не только сохраняете себя от дублирующего кода, но также можете хранить переменные и делиться ими.

Оба будут работать, но вы можете прочитать некоторые интересные обсуждения на форуме Factory vs Service, если у вас есть проблемы с выбором.

0

Вещь выглядит следующим образом:

Мы будем писать функции в контроллерах, если эта функция обычно манипулируя model и имеет отношение только к этому контроллеру.

Пишет услугу, обычно для предоставления данных к контроллерам, например, от асинхронного вызова API, а также для обмена данных между контроллерами.

В вашем случае, если вы хотите использовать функцию утилиты, вы можете использовать service, но функция resetForm больше похожа на специфику контроллера, так как она очистит некоторые значения модели. В будущем вы можете добавить дополнительные условия и операции в эту функцию, которые могут создавать сложный код, если вы используете для этого службу.

Если эта функция является функцией «не меняющейся функции», с помощью службы, это хороший способ пойти. (повторное использование кода и все), но в противном случае обернуть всю логику в одном месте более полезно. (записать его в контроллер)

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