Javascript 关于angular.js中DI的几个问题

Javascript 关于angular.js中DI的几个问题,javascript,angularjs,Javascript,Angularjs,我正在练习DI,并尝试在angular.js中实现模块化。我已经搜索了一些教程,并尝试重新编码 我最初的计划如下(我可能有错误的概念,请帮助指出): 一个ng应用程序:myapp 带有工厂服务的模块“finance2”:“currencyConverter” angular.module('finance2',[]).factory('currencyConverter',function(){ 一个带有控制器的模块“ctrl1”:InvoiceController。然后我将服务模块注入其中 a

我正在练习DI,并尝试在angular.js中实现模块化。我已经搜索了一些教程,并尝试重新编码

我最初的计划如下(我可能有错误的概念,请帮助指出):

  • 一个ng应用程序:myapp

    带有工厂服务的模块“finance2”:“currencyConverter”

    angular.module('finance2',[]).factory('currencyConverter',function(){ 一个带有控制器的模块“ctrl1”:InvoiceController。然后我将服务模块注入其中

    angular.module('ctrl1',['finance2']).controller('InvoiceController', ['currencyConverter', '$scope',function(currencyConverter,$scope) { 角度.module('ctrl1',['finance2']).controller('InvoiceController',['currencyConverter','$scope',函数(currencyConverter,$scope){
  • 然后,我将控制器模块注入应用程序 var app = angular.module("switchableGrid",['ctrl1']); var app=angular.module(“switchableGrid”,['ctrl1'])
  • 下面是完整的代码,jsfiddle.net/c7fF3/1/


    但是什么也没发生,有人能给我一个提示吗?非常感谢。

    对于您的小提琴,我将框架和扩展部分的第二个下拉列表更改为“无包裹体”,并且我没有看到异常被记录

    另外,如果您使用控制器作为语法,则应该使用

    this.currences=currencyConverter.currences;

    而不是


    $scope.currences=currencyConverter.currences;

    您使用的是
    ng app=“myapp”
    ,但您的应用程序实际上是一个名为
    switchableGrid的模块

    将标记更改为

    <body ng-app="switchableGrid">
    
    这样试试

    angular.module('app', [])
        .config(['$routeProvider', function ($routeProvider) {
            $routeProvider
    
                .when('/xxx', { templateUrl: 'app/xxx.html', controller: 'xxxCtrl' })
    
        }])
    
        .factory(
            'currencyConverter',
            function ($resource) {
                return $resource(URL);
            })
    
    
        .controller('xxxCtrl', ['$scope', '$http', '$routeParams', '$route', function ($scope, $http, $routeParams, $route) {      
    $scope.currencies = currencyConverter.currencies;
        }])
    

    我非常确定您不能将一个模块注入另一个模块。您可以注入指令、工厂、服务等。您可能需要阅读AngularJS的指南。@Adam这不是注入,而是声明对另一个模块的依赖关系,这在Angular中是绝对可能的,还有@Chandermani提供的建议,您已经指定了为
    ng app
    安装了一个不存在的模块。下面是我快速编辑的JSFIDLE的一个修改版本:angular尝试引导不存在的模块时,您怎么能看不到异常?
    angular.module('myapp', ['ctrl1']);
    
    angular.module('app', [])
        .config(['$routeProvider', function ($routeProvider) {
            $routeProvider
    
                .when('/xxx', { templateUrl: 'app/xxx.html', controller: 'xxxCtrl' })
    
        }])
    
        .factory(
            'currencyConverter',
            function ($resource) {
                return $resource(URL);
            })
    
    
        .controller('xxxCtrl', ['$scope', '$http', '$routeParams', '$route', function ($scope, $http, $routeParams, $route) {      
    $scope.currencies = currencyConverter.currencies;
        }])