Переменные или область использования внутри директив

Я довольно новичок в angular and directions, но когда я делал пользовательскую директиву для своего приложения, я понял, что использую переменные и область действия взаимозаменяемо без проблем.

Например у меня scope.onBreak = falseи var completedSessions = 0

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

scope.onBreak = false;
scope.onLongBreak = false;
// starts countdown from current work/break time 
scope.timerText = "Work Timer";

var completedSessions = 0;

var timeSet;


var setBreak = function() {
  $interval.cancel(timeSet);
  scope.workTime = MY_TIMES.break;
  scope.buttonText = "START";
  scope.onBreak = true;
  scope.timerText = "Break Timer";
};


scope.countdown = function() {
  if (scope.workTime <= 0) {
    //if countdown reaches 0  and is on break , set time to 25m (work) 
    if (scope.onBreak) {
      console.log("currently working");
      setWork();
    } else {
      setBreak();
    }

  }
} else {
  //countdown 
  scope.workTime--;
}
};

3 ответа

  1. Я думаю, что хороший способ взглянуть на это-сказать, что ‘scope’ является гибкой (и манипулируемой) связью между контроллером и представлением (шаблоном). Переменные являются внутренними для класса, над которым вы работаете, будь то IT controller, directive,service и т.д., и только видимые этими классами (файл шаблона не может получить доступ к объявленной переменной под названием ‘foo’ на контроллере). Возможно, есть более красноречивые объяснения, но так как никто ничего не опубликовал, я подумал, что буду.

  2. Переменные следует использовать, когда нет необходимости передавать данные в представление, так как это быстрее.

    Если необходимо использовать эти данные в представлении, используйте область.

  3. переменные области привязываются к представлению DOM. Но VAR не может связывать, и функциональность мудрая только мы можем использовать в JS.