在不了解原因的细节的情况下,我需要在控制器中为$scope
提供别名。而不是注入和装饰$scope
我希望用户能够注入view
并使其具有相同的效果。
根据我对角度的理解,$scope
由$scopeProvider
创建,viewProvider
是在角应用程序的配置时注册的工厂。我假设我需要注册一个$scopeProvider
并将其设置为等于['$scope', function(view){...
,但我没有幸运,我一直在努力。有什么想法吗?
仅供参考:我不是在寻找像['view', function(view){...
这样的东西,理想的解决方案适用于$scope
。视图对象的行为完全,如{{1}},双向绑定等。
答案 0 :(得分:10)
如果您正在教AngularJS
,您实际上应该避免使用$scope
并使用controller as syntax
- See this awesome Angular Style Guide by John Papa for explanation。
那也可以解决你的问题:)
答案 1 :(得分:2)
没有$scopeProvider
这样的东西,使用$new
方法创建范围,每个范围都可以通过继承访问此方法(准确地委托)。当您在控制器中请求$scope
时,$scope
将使用其父$scope
$new
方法动态创建,并以该名称注入。要为不同的名称调用上述行为,您必须使用角度内部。
答案 2 :(得分:0)
我能够在我的应用程序的配置部分解决它。在我的控制器中,现在我可以使用$scope
或view
,它们具有相同的含义。
$routeProvider
.when('/Index', {
templateUrl: "/views/index.html",
controller: ['$scope', '$controller', function($scope, $controller){
$controller("IndexController", {$scope:$scope, view: $scope});
}]
})