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() { 
      } 
     } 
    })();