Angularjs:Controller Function:变量:'var'或控制器propeties

时间:2015-11-18 08:22:45

标签: javascript angularjs

在一个函数内的AngularJS应用程序中,该函数再次位于Controller内部, 创建变量时最好的方法是什么。

  • 通常使用var关键字

    创建
        function getAnswer() {
           //Some code here
           var persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
          //Some other code here
          return persistedDateValue;
       }
    
  • 将其添加到控制器范围

        function getDateAnswer() {
        //Some code here
        ctrl.persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
        //Some other code here
        return ctrl.persistedDateValue;
    }
    

此处ctrl是控制器,与指令controllerAs: 'ctrl',一样。

我的不足之处是选项1更好,因为除了这个函数之外我们不需要这个变量。

请建议。

3 个答案:

答案 0 :(得分:2)

我同意ZSnake的回答,但是如果您确实需要在视图的其余控制器中提供此变量,那么您将需要

.controler('ControllerName', function() {
   var _this = this;

   function getDateAnswer() {
     //Some code here
     _this.persistedDateValue = templateFactory.getAnswer(ctrl.item.ItemId);
   }

答案 1 :(得分:1)

最佳做法是选项1,如果如您所说,您不会在其他地方使用该变量。这样就可以避免在示波器上放置未使用的数据。

答案 2 :(得分:0)

Javascript对此非常宽容。如果您使用更严格的语言作为C或其任何变体,则无法在第二个选项中执行您所公开的操作。 这种从外部作用域(从函数外部)访问变量的方式被称为“闭包”,并且在某些情况下可能会有所帮助,但是肯定不会在你暴露的那个中,这只会弄乱你的代码,因为这个函数本身可以通过它的结果以“正常”方式返回它的结果,保持编程科学最重要的原则之一:关注点分离(朋友的SoC)

坚持选择1