未知提供者:$scopeProvider
Unknown provider: $scopeProvider
我在 AngularJS 中创建了一个具有 Skinny AngularJS Controllers 的应用程序。该应用程序工作正常,但问题是当我尝试使用 $controller('ControllerOne')
访问另一个控制器时,出现以下异常。
Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope
http://errors.angularjs.org/1.2.1/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:78:12
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3451:19
at Object.getService [as get] (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3578:39)
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3456:45
at getService (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3578:39)
at invoke (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3600:13)
at Object.instantiate (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3636:23)
at $get (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:6639:28)
at new <anonymous> (http://fiddle.jshell.net/_display/:47:22)
at invoke (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3624:28)
我的代码如下
var mainApp = angular.module('mainApp', ['firstApp', 'secondApp']);
var firstApp = angular.module('firstApp', []);
firstApp.controller('ControllerOne', function ($scope) {
this.name = "Messi";
});
var secondApp = angular.module('secondApp', []);
secondApp.controller('ControllerTwo', function ($scope, $controller) {
$scope.ctrlOne = $controller('ControllerOne');
});
谁能告诉我一些解决方案
$controller
将实例化控制器。
您需要将范围传递给它。
ctrl1 = $controller('ControllerOne', {$scope: $scope})
这是更新后的 fiddle。 http://jsfiddle.net/oqnrrL8y/1/
不确定像您现在那样做是不是一个好主意,但这里有一个解决方案:
secondApp.controller('ControllerTwo', function ($scope, $controller) {
$scope.ctrlOne = $controller('ControllerOne', {$scope: $scope});
});
问题是根据 ControllerOne
的定义,它需要一个依赖注入服务:$scope
。所以你需要提供这个服务。
我在 AngularJS 中创建了一个具有 Skinny AngularJS Controllers 的应用程序。该应用程序工作正常,但问题是当我尝试使用 $controller('ControllerOne')
访问另一个控制器时,出现以下异常。
Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope
http://errors.angularjs.org/1.2.1/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:78:12
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3451:19
at Object.getService [as get] (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3578:39)
at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3456:45
at getService (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3578:39)
at invoke (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3600:13)
at Object.instantiate (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3636:23)
at $get (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:6639:28)
at new <anonymous> (http://fiddle.jshell.net/_display/:47:22)
at invoke (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js:3624:28)
我的代码如下
var mainApp = angular.module('mainApp', ['firstApp', 'secondApp']);
var firstApp = angular.module('firstApp', []);
firstApp.controller('ControllerOne', function ($scope) {
this.name = "Messi";
});
var secondApp = angular.module('secondApp', []);
secondApp.controller('ControllerTwo', function ($scope, $controller) {
$scope.ctrlOne = $controller('ControllerOne');
});
谁能告诉我一些解决方案
$controller
将实例化控制器。
您需要将范围传递给它。
ctrl1 = $controller('ControllerOne', {$scope: $scope})
这是更新后的 fiddle。 http://jsfiddle.net/oqnrrL8y/1/
不确定像您现在那样做是不是一个好主意,但这里有一个解决方案:
secondApp.controller('ControllerTwo', function ($scope, $controller) {
$scope.ctrlOne = $controller('ControllerOne', {$scope: $scope});
});
问题是根据 ControllerOne
的定义,它需要一个依赖注入服务:$scope
。所以你需要提供这个服务。