0

所以我一直在制作网站一段时间,但只有真正的显示和信息的东西。我想我会和AngularJs一起去的,所以我遵循了codechool的指南。我在应用程序上工作了一天或两天,当我意识到基于在线文档时,我不会推荐使用的语法。当我尝试转换它时,我收到一个错误。 这里是我以前的工作代码:交换导致错误的AngularJS语法

(function(){ 
    var angular.module('builder', []) = angular.module('builder', []); 

    app.controller('BuildController', function(){ 
     this.sections = sectionArray; 
    }); 

})(); 

而且我也改变了它:

function() { 

     angular.module('builder', []).controller('BuildController', BuildController); 

     function BuildController(){ 
      this.sections = sectionArray; 
     } 
}(); 

还有更多,但是这是一个简单的例子看到,因为我正在与BuildController错误。这是我收到的错误:

Error: [ng:areq] http://errors.angularjs.org/1.4.4/ng/areq?p0=BuildController&p1=not%20a%20function%2C%20got%20undefined 
    at Error (native) 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:6:416 
    at pb (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:22:41) 
    at Sa (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:22:128) 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:80:25 
    at N (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:59:447) 
    at K (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:60:287) 
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:54:326) 
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:54:349) 
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js:53:388 

我将是任何帮助任何人都可以提供,因为我拉我的头发与此非常感谢。

谢谢!

回答

1

我不明白你为什么认为你的第一个片段更糟。它使用IIFE模式。 IIFE允许避免对全球背景的污染,并且它们通常用于Angular。

为了使你的第二个片段工作,去掉封闭函数:

angular.module('builder', []) 
    .controller('BuildController', ['$scope', function ($scope) { 
     $scope.sections = []; 
    }]); 

请注意,您不必绕功能封闭括号中的第二代码片段。因此,这被视为函数声明,而不是立即调用的函数表达式(IIFE)。尽量正确地围住功能:

(function() { 

    angular.module('builder', []).controller('BuildController', BuildController); 

    function BuildController(){ 
     // ... 
    } 
})(); 
+0

的原因,我认为这是糟糕的是,因为我在这里阅读:https://github.com/johnpapa/angular-styleguide#style-y022但是如果第一种语法不是那么糟糕,我可能会坚持下去,因为我对它更熟悉。 –

+0

好阅读!但仔细阅读:https://github.com/johnpapa/angular-styleguide#iife。 '注意:为简洁起见,本指南中的其余示例可能会省略IIFE语法。' – Constantine

+0

我想我会坚持使用片段1的语法,如果我曾经决定我需要一个不眠之夜晚上在线下生病一遍一遍地移植它。当你第一次开始的时候,这个东西很难做到!非常感谢你的帮助 –

0

我建议你jonhpapa-angular-styleguide,正确的语法是:

(function() { 
     'use strict'; 

     angular 
      .module('MODULENAME') 
      .controller('NameCtrl', Controller); 


     /* @ngInject */ 
     function Controller() { 
      var vm = this; 
      vm.title = 'Controller'; 

      activate(); 

      //////////////// 

      function activate() { 
      } 
     } 
    })();