指令内的变量或范围用法

时间:2017-01-13 09:27:04

标签: javascript angularjs variables angularjs-directive scope

我对角度和指令相当新,但是当我为我的应用程序制作自定义指令时,我意识到我使用变量和范围可以互换而没有问题。

例如,我有scope.onBreak = falsevar completedSessions = 0

我的问题是,我何时应该使用范围,何时应该在指令中使用变量,如果我不相应地使用它们,这最终会导致问题。

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 个答案:

答案 0 :(得分:0)

我认为看待它的一个好方法就是说&#39;范围&#39;是控制器和视图(模板)之间的可延展(和可操作)链接。变量是您正在处理的类的内部变量,无论是控制器,指令,服务等,并且只能由这些类看到(模板文件无法访问控制器上名为&#39; foo&#39;的声明变量)。可能有更多有说服力的解释,但由于没有人发布任何内容,我想是的。

答案 1 :(得分:0)

只要您不需要将数据传递给视图,就应该使用变量,因为它更快。

如果您需要在视图中使用该数据,请使用范围。

答案 2 :(得分:0)

范围变量绑定到DOM视图。但是var不能绑定,只有我们可以在JS中使用功能。