Javascript 将服务分配给控制器';什么范围?
假设我有一个服务FooService和一个控制器FooController 假设FooService有3个变量(除其他变量外)fooA、fooB和fooC需要在某些视图中显示 控制器中是否存在以下错误形式:Javascript 将服务分配给控制器';什么范围?,javascript,angularjs,Javascript,Angularjs,假设我有一个服务FooService和一个控制器FooController 假设FooService有3个变量(除其他变量外)fooA、fooB和fooC需要在某些视图中显示 控制器中是否存在以下错误形式: $scope.fooService = FooService; 然后,为了: {{ fooService.fooA }} - {{ fooService.fooB }} - {{ fooService.fooC }} {{ fooA }} - {{ fooB }} - {{ fooC }
$scope.fooService = FooService;
然后,为了:
{{ fooService.fooA }} - {{ fooService.fooB }} - {{ fooService.fooC }}
{{ fooA }} - {{ fooB }} - {{ fooC }}
或者,最佳做法是分配控制器和视图所需的变量,如下所示:
$scope.fooA = FooService.fooA;
$scope.fooB = FooService.fooB;
$scope.fooC = FooService.fooC;
然后,为了:
{{ fooService.fooA }} - {{ fooService.fooB }} - {{ fooService.fooC }}
{{ fooA }} - {{ fooB }} - {{ fooC }}
我一直在将整个服务分配给控制器的作用域,但我觉得我做错了什么。是吗?您可能希望将服务注入控制器并使用它
function Controller($scope, ServiceA, ServiceB, ...) {
var bar = ServiceA.doFoo();
...
}
但无论如何。。。控制器应该使用服务等。将服务放入范围完全可以。这样,像
fooA
这样的变量在编写为FooService.fooA
时可以获得更多的上下文。当我们需要将一个控制器中的更新值更改为一个完全不同的控制器时,这是一种非常好的使用方法。在范围中包含结构化变量被认为是一种良好的做法。这样您可以看到变量之间的关系。像customer.name
,customer.email
而不是name
和email
。phylax,为什么评论而不回答?