Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 模块如何在没有依赖项的情况下访问另一个模块_Angularjs_Angularjs Module - Fatal编程技术网

Angularjs 模块如何在没有依赖项的情况下访问另一个模块

Angularjs 模块如何在没有依赖项的情况下访问另一个模块,angularjs,angularjs-module,Angularjs,Angularjs Module,我有点搞不清楚模块是如何加载的。以以下代码为例: var app = angular.module("app", [ "app.widgets", "app.core"]); var core = angular.module("app.core", []); core.factory("foo", function(){ return { ping: function(){ return "pong"; }

我有点搞不清楚模块是如何加载的。以以下代码为例:

var app = angular.module("app", [ "app.widgets", "app.core"]);


    var core = angular.module("app.core", []);
    core.factory("foo", function(){
      return {
        ping: function(){
         return "pong";
        }
      }
    });

    var widgets = angular.module("app.widgets", []);
    widgets.controller("WidgetController", function($scope, foo){
      $scope.items = [1,2,3,foo.ping()];
    });

<body ng-app="app">
  <ul ng-controller="WidgetController">
    <li ng-repeat="item in items">
      {{item}}
    </li>
  </ul>
</body>
var-app=angular.module(“app”、[“app.widgets”、“app.core”);
var core=angular.module(“app.core”,[]);
core.factory(“foo”,function(){
返回{
ping:函数(){
返回“pong”;
}
}
});
var widgets=angular.module(“app.widgets”,[]);
widgets.controller(“WidgetController”,函数($scope,foo){
$scope.items=[1,2,3,foo.ping()];
});
  • {{item}}
我对我的“app.widgets”模块如何访问“app.core”模块感到困惑,即使它没有声明为依赖项

这似乎是因为“app.widgets”和“app.core”都是在第三个模块中声明的,这非常方便。但我觉得这不是很直观


所以我想我的问题是“如果两个模块在第三个模块中声明,它们会相互“了解”吗?”。这是记录在案的行为吗?

您在应用程序模块中包含了两个模块,即
[“app.widgets”,“app.core”]
,然后您在应用程序内部使用
WidgetController
。尽管您没有对
app.widgets
module建立任何明确的依赖关系,但您仍然可以从app模块内部的模块
app.core
访问工厂foo,因为您的app模块依赖于
app.core
。 如果你尝试

<body ng-app="widgets ">
  <ul ng-controller="WidgetController">
    <li ng-repeat="item in items">
      {{item}}
    </li>
  </ul>
</body>

  • {{item}}
这是行不通的,因为在您的
ng app=“widgets”
中定义的工厂foo与之不同。
因此,为了理解,请将应用程序模块视为两个模块的容器
[“app.widgets”,“app.core”]
,您可以在其中访问所有控制器、工厂等,就像它们是应用程序模块本身的一部分一样。

我认为它是这样的:

1) “app”已注入“app.core”,因此所有“app.core”服务、工厂等都可用于“app”模块

2) 在“app”模块中,您还可以插入“app.widgets”,然后它可以访问“app”模块可以访问的所有内容

所以:app访问app.core&&app.widgets访问app->app.widgets访问app.core

我不确定它是否被记录在某个地方,如果是的话,我很乐意阅读。 查看此脚本了解更多有趣的内容:

似乎父模块上声明的foo没有被子模块中的foo覆盖。 如果注入模块都有foo,则使用后者:

var app = angular.module("app", [ "app.core", "app.widgets"]);

使app.widgets.foo成为app.foo和app.core.foo。它覆盖app.core.foo

刚刚添加了html@Naeem ShaikhYou应该阅读该部分。