在Javascript中将控制器传递到控制器
我正在尝试将我的控制器传递到另一个控制器,但我不断收到错误:[$injector:unpr]未知提供程序:MchControllerProvider 此部分是MchController->在Javascript中将控制器传递到控制器,javascript,angularjs,controller,nested,Javascript,Angularjs,Controller,Nested,我正在尝试将我的控制器传递到另一个控制器,但我不断收到错误:[$injector:unpr]未知提供程序:MchControllerProvider 此部分是MchController-> 'use strict'; myApp.controller('MchController', function ($scope, $routeParams, mchService, CustomerDataService, EntityInfoService, RatesDataService, Ren
'use strict';
myApp.controller('MchController', function ($scope, $routeParams, mchService, CustomerDataService, EntityInfoService, RatesDataService, RenewalGroupDataService) {
console.log('reached MchController');
//Rout parameters as passed via App.js
$scope.routeParams = {
type: $routeParams.Type,
id: $routeParams.Id
};
//Properties associated with data
$scope.visible = {
experience: true,
persistency: true,
}
// define view model and expose it to the scope
var vm = {
title: 'Loading MCH Name... ',
CustomerNumber: 'Loading MCH Number...'
};
$scope.vm = vm; //local scope to MchController
vm.type = $routeParams.Type;
vm.id = $routeParams.Id;
vm.togglePlans = togglePlans;
vm.toggleRates = toggleRates;
vm.getRateInformation = getRateInformation;
vm.getMch6 = getMch6;
vm.Mch2Information = [];
vm.searchParameters = mchService.searchParameters;
function togglePlans()
{
vm.expandedPlans = !vm.expandedPlans;
}
//Puts multiple sets of Mch2 data into array to iterate through
vm.Mch2Information = new Array();
vm.getEntityInformation = function () {
getEntityInformation('MCH', mchService.searchParameters);
}
//Initialize GET command for Customer Information
//getEntityInformation($routeParams.Type, $routeParams.Id);
function getEntityInformation(type, id)
{
switch (type)
{
case "MCH": getCustomerInformation(id);
//getMch6();
getMch2Information(id);
....
您不能将一个控制器注入另一个控制器。如果两个控制器之间存在共享逻辑,则将其放入服务中,并将其注入控制器中
理想情况下,您的控制器应尽可能薄,并且大部分(如果可能,全部)业务逻辑应驻留在服务中。您不能使用依赖项注入将一个控制器注入另一个控制器,但您可以嵌套控制器并利用嵌套控制器之间的原型继承:
<body ng-controller="MainCtrl">
<div ng-controller="ChildCtrl">
<p>Hello {{name}}!</p>
<button ng-click="parentAction()">parent action</button>
<button ng-click="overriddenAction()">overriden action</button>
</div>
</body>
通过这种方式,您可以访问在父控制器上定义的函数和对象。或者,您可以事件覆盖这些对象或函数
如果您想更多地了解angularjs中的原型继承,我建议您阅读这个问题:验证包含MCHController定义的文件是否包含在index.html中。我验证了它,并且它包含在index.html中。htmlSince控制器是Javascript中的对象,您可以在对象上执行依赖项注入,然后就可以了从逻辑上讲,一个依赖项可以将控制器注入另一个对象(在本例中为控制器)。这有意义吗?请参阅此链接以了解可以或不能注入的内容的解释
<body ng-controller="MainCtrl">
<div ng-controller="ChildCtrl">
<p>Hello {{name}}!</p>
<button ng-click="parentAction()">parent action</button>
<button ng-click="overriddenAction()">overriden action</button>
</div>
</body>
app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.parentAction = function () {
alert('greetings from parent controller')
};
$scope.overriddenAction = function () {
alert('greetings from parent controller');
};
});
app.controller('ChildCtrl', function ($scope) {
$scope.overriddenAction = function () {
alert('greetings from child controller');
};
})