所以我一直在制作网站一段时间,但只是显示和信息的真正东西。我以为我会和AngularJs一起去,所以我按照了codechool上的指南。当我基于在线文档意识到我不会推荐使用的语法时,我已经在应用程序上工作了一天或两天。当我尝试转换它时,我得到一个错误。 这是我以前的工作代码:
(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
我会非常感激任何人都可以提供的任何帮助,因为我正在用这个来拉我的头发。
谢谢!
答案 0 :(得分:1)
我不明白为什么你认为你的第一个片段更糟糕。它使用IIFE模式。 IIFE允许避免污染全球背景,它们通常用于Angular。
为了使您的第二个代码段正常工作,请删除封闭功能:
angular.module('builder', [])
.controller('BuildController', ['$scope', function ($scope) {
$scope.sections = [];
}]);
请注意,您的第二个代码段中的函数周围没有括号。因此,它被视为函数声明,而不是立即调用的函数表达式(IIFE)。尝试正确地包含该功能:
(function() {
angular.module('builder', []).controller('BuildController', BuildController);
function BuildController(){
// ...
}
})();
答案 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() {
}
}
})();