Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Javascript 角度模块依赖项注入未按预期工作_Javascript_Angularjs_Node.js - Fatal编程技术网

Javascript 角度模块依赖项注入未按预期工作

Javascript 角度模块依赖项注入未按预期工作,javascript,angularjs,node.js,Javascript,Angularjs,Node.js,因此,我在管理节点应用程序的依赖项方面遇到了问题。结构如下 app.js var app = angular.module('myApp', ['myController', 'myFactory', 'rzModule', 'chart.js', 'myService', 'selector']); myController.js var app = angular.module('myApp', ['chart.js', 'rzModule', 'selector']); app.cont

因此,我在管理节点应用程序的依赖项方面遇到了问题。结构如下

app.js

var app = angular.module('myApp', ['myController', 'myFactory', 'rzModule', 'chart.js', 'myService', 'selector']);
myController.js

var app = angular.module('myApp', ['chart.js', 'rzModule', 'selector']);
app.controller('myController', function($scope, $http, $rootScope, myFactory, mySecondService){ ... }]);
myFactory.js

angular.module('myApp').factory('myFactory', function($http, $rootScope){ ... });
myService.js

angular.module('myApp').service('myService', function($http){...});
上述结构正常工作,应用程序按预期运行。但是我不认为我在myController.js中所做的是正确的,因为我现在想添加另一个依赖项,我不知道如何在应用程序不崩溃的情况下这样做

问题1:在上面的myController.js中,我想我是在创建一个新模块,而不是重用app.js中的模块,对吗?如果是这样,将3个依赖项内联移动(如以下所示)将导致“myController不可用”:

为什么这不起作用?根据法律规定,它应该这样做

问题2:我想添加到myController中。说明说我应该将
'angularmonent'
作为依赖项添加到app.js中,然后将
'moonet'
添加到控制器依赖项中。如果我这样做并像问题1那样添加
'moment'
内联,我会再次遇到“myController不可用”错误。

正如Satpal所说

app.controller('myController',['chart.js', 'rzMo
这是一条路要走,或者说写这篇文章的更简洁的方式是这样做

angular.module('myApp').controller('myController');

myController.$inject = ['$scope', '$http', '$rootScope', 'myFactory', 'mySecondService']

function myController($scope, $http, $rootScope, myFactory, mySecondService){}
myController
无法与修复一起使用的原因是,现在您没有覆盖主应用程序模块,它正在寻找一个名为
myController
的模块,但找不到该模块(因为它是控制器而不是模块)。因此,从
var-app=angular.module('myApp',['myController'

我建议您看一看,它有助于编写干净的代码。

正如Satpal所说

app.controller('myController',['chart.js', 'rzMo
这是一条路要走,或者说写这篇文章的更简洁的方式是这样做

angular.module('myApp').controller('myController');

myController.$inject = ['$scope', '$http', '$rootScope', 'myFactory', 'mySecondService']

function myController($scope, $http, $rootScope, myFactory, mySecondService){}
修复程序无法使用myController的原因是,现在您没有覆盖主应用程序模块,它正在寻找一个名为myController的模块,但找不到该模块(因为它是控制器而不是模块)。因此,请从
var app=angular.module('myApp')中删除
'myController'
,['myController'

我建议您查看一下它,它有助于编写干净的代码。

Ans 1: 是的,在第二种情况下,您尝试再次定义它。 要定义应用程序,请使用:

angular.module('myApp', [..list of dependancies...]);
现在,如果要在上一个模块上定义控制器,请使用

angular.module('myApp').controller();
现在是你的3个依赖项,将它们移动到你定义应用程序的顶部

回答2:你必须将angularMoment注入你的应用程序,将moment注入你的控制器

在angular中处理依赖注入的最佳方法是使用$inject

angular.module('myApp').controller('myController', myController);

myController.$inject = ['moment','$scope', '$http', '$rootScope', 'myFactory', 'mySecondService']
function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
    //your controller code.
}
或者你也可以试试下面的方法

angular.module('myApp').controller('myController',['moment','$scope', '$http', '$rootScope', 'myFactory', 'mySecondService', function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
    //your controller code.
}]);
以下方法也适用,但不推荐:

angular.module('myApp').controller('myController',function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
        //your controller code.
    });
答复1: 是的,在第二种情况下,您尝试再次定义它。 要定义应用程序,请使用:

angular.module('myApp', [..list of dependancies...]);
现在,如果要在上一个模块上定义控制器,请使用

angular.module('myApp').controller();
现在是你的3个依赖项,将它们移动到你定义应用程序的顶部

回答2:你必须将angularMoment注入你的应用程序,将moment注入你的控制器

在angular中处理依赖注入的最佳方法是使用$inject

angular.module('myApp').controller('myController', myController);

myController.$inject = ['moment','$scope', '$http', '$rootScope', 'myFactory', 'mySecondService']
function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
    //your controller code.
}
或者你也可以试试下面的方法

angular.module('myApp').controller('myController',['moment','$scope', '$http', '$rootScope', 'myFactory', 'mySecondService', function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
    //your controller code.
}]);
以下方法也适用,但不推荐:

angular.module('myApp').controller('myController',function myController(moment, $scope, $http, $rootScope, myFactory, mySecondService){
        //your controller code.
    });

所以在回答你的问题之前 随着angularjs的继续,模块需要注入到应用程序中,而不是注入到控制器中,因此任何要包含的模块都需要注入到应用程序中

var app = angular.module('myApp', [<all modules comma separated>]);
这应该是可行的,使用它并不意味着你正在创建任何新的应用程序

问题2

var app = angular.module('myApp', ['angularMoment']);
app.controller('myController', ['moment', function(...)

像这样,您可以使用力矩对象。

所以在回答您的问题之前 随着angularjs的继续,模块需要注入到应用程序中,而不是注入到控制器中,因此任何要包含的模块都需要注入到应用程序中

var app = angular.module('myApp', [<all modules comma separated>]);
这应该是可行的,使用它并不意味着你正在创建任何新的应用程序

问题2

var app = angular.module('myApp', ['angularMoment']);
app.controller('myController', ['moment', function(...)

像这样,你可以使用力矩对象。

app.controller('myController',['chart.js','rzMo…
是继续的方式,文件的顺序是什么?@Satpal这是我的猜测,但如上所述,它导致控制器不可用。为什么在
angular.module中使用
myController
('myApp'
decelleration?@ffritz)这是因为您需要从这里删除
'myController'
var app=angular.module('myApp',['myController'
所以服务/工厂不应包含在应用程序依赖项中?
app.controller('myController',),['chart.js','rzMo…
是继续的方式,文件的顺序是什么?@Satpal这是我的猜测,但如上所述,它导致控制器不可用。为什么在
angular.module中使用
myController
('myApp'
decelleration?@ffritz)这是因为您需要从这里删除
'myController'
var-app=angular.module('myApp',['myController'
所以服务/工厂不应该包含在应用程序依赖项中?谢谢,但是首先我认为注入应该是这样的:
myController.$inject=['$scope']
。第二,这导致
名为“myController”的控制器未注册。
对我来说。@ffritz你说得对,我从你的代码中复制时忘了更改它。我认为Lalit Sachdeva的答案是更好的解释tbh。谢谢,但首先我认为注入应该是这样的:
myController.$inject=['$scope'…]
。第二,这导致
名为“myController”的控制器未注册。
对我来说。@ffritz你说得对,我从你的代码中复制时忘了更改它。我想Lalit Sachdeva