我是否必须为与我的角度应用相关的每个文件声明一个角度模块var?

时间:2015-05-28 02:09:28

标签: javascript angularjs

我想在 directive.js 中编写指令,并在 controller.js中编写控制器 但是我必须在每个文件中写class A { }; class B0: public A { }; static void f(B0 * b) { } int main() { A * a = new B0(); B0 * b = new B0(); f(a); // compiler error f(b); delete a; delete b; } 和app的配置? 有没有简单的方法来写它们?

4 个答案:

答案 0 :(得分:2)

不要采用“yo angular”的简单回答。这使您无法了解如何根据应用程序的需要设置自己的构建。

就目录结构而言,我使用如下内容:

Application directory structure

如果你有其他东西要进入你的应用程序/那么你可以将所有功能移动到一个文件夹,即“模块”

关于我如何启动模块代码以及该模块的关系控制器/指令等。它看起来像下面的块:

文件:app / foo / foo.js

$cyldata = $_POST['cylinder']; //this is the post from top.

$num_elements = 0;

while($num_elements < count($cyldata['serie'])){
    $cylinder = new Cylinder();
    $cylinder->serie     = $cyldata['serie'][$num_elements];
    $cylinder->type      = $cyldata['type'][$num_elements];
    $cylinder->admission = $cyldata['admission'][$num_elements];
    $cylinder->seriesap  = $cyldata['seriesap'][$num_elements];         
    $cylinder->save
    $num_elements++;

}

文件:app / foo / controllers / foo.fooController.js

(function() {

    angular.module('foo', []);

})();

文件:app / foo / directives / foo.fooDirective.js

(function() {

    function fooController() {
        // controller code
    }

    angular.module('foo').controller('fooController', fooController);

})();

答案 1 :(得分:1)

您不必在全局范围内缓存模块,您可以在每个文件/每次需要时使用getter syntax of module angular.module('app')。有了这个,你不会通过放置变量ex: - app来污染全局范围,以便能够在其他地方使用它。

controller.js:

//controller def
angular.module('app').controller('myCtrl', MyCtrl);

directive.js:

//directive def
angular.module('app').directive('myDir', MyDir);

只是不要在其他地方执行angular.module('app',[])重新初始化模块。

答案 2 :(得分:0)

我也很难接受这个概念。归结为此。

首先将AngularJS Module视为namespace声明,然后考虑以下内容。

给定一个名为&#34; foo&#34;的应用程序命名空间,您可能有几个文件组成了您的应用程序,但您希望所有这些文件只是扩展&#34; foo&#34;命名空间。 AngularJS&#39;模块功能有两个原型;第一个采用两个参数,第二个只采用一个参数。在主模块文件中(让它称之为首先加载的文件),您将使用两个参数版本初始化您的应用程序并定义您希望Angular包含哪些外部模块。

以下代码示例显示了这两种格式的用法。第一个展示了如何执行模块的初始声明。注意第二个参数,它是一个字符串数组,用于标识模块所依赖的模块;即使您没有依赖项,也必须提供空数组。

//main.js
(function(angular,undefined){
    "use strict";

    angular.module("foo", ["ui-router"]);
})(angular);

在示例的第二部分中,您应该注意到没有第二个参数。这基本上告诉Angular你已经在其他地方初始化了模块,现在你只是想添加它。

//bar-controller.js
(function(angular,undefined){
    "use strict";

    angular.module("foo")
        .controller("bar", ["$scope", "$state", function($scope, $state){
             //Do controller stuff
        });
})(angular);

至于如何整理文件?那取决于你。无论你和你的应用程序有什么意义。 AngularJS真的不关心文件系统的结构,除了模板的所有路径都相对于&#34; main&#34; js文件。

答案 3 :(得分:0)

据我了解,您需要知道的是,如果您必须在每个包含Angular代码的.js文件中声明一个app变量...(问题的标题与内容不匹配)

简短回答:

说明

您可以这样声明角度应用

var myAppModule = angular.module('myApp', []); 

这将允许您声明控制器,服务等..像这样

myAppModule.controller('MyCTRL', ['dep1','dep2', function(dep1,dep2){
      //...
 }]);

或者您可以将其声明为模块而不为其指定变量

angular.module('myAppModule', []); 

然后你必须声明控制器,服务等...像这样

angular.module('myAppModule').controller('MyCTRL', ['dep1','dep2', function(dep1,dep2){
      //...
    }]);

现在,要完全回答您的问题,一旦声明了模块,就不必再次声明它,只需记住在具有de控制器的模块之前加载包含app模块声明的.js文件。 ,指令,服务等。

你也应该看看这个:'Best' way to declare a module