我正面临 AngularJS、服务和范围的“问题”。
这不是一个真正的问题(我找到了几种让它工作的方法),但我想知道我是否在做正确的事情,或者我正在做的事情是否会导致将来出现问题
我有一个保存一些全球数据的服务;该服务有两种方法: getData() refreshData()
refreshData 触发一些工作(休息调用等),并在不同控制器内的精确点被调用,以响应用户操作(按钮点击等)。
(显然)调用 getData 来取回数据。
在控制器中,我应该如何使用它来访问数据并将其放在范围内,以便可以从视图中访问它?
备选方案 1:
controller('MyController', function ($scope, myService) {
$scope.data = myService.getData();
//use data in functions and in the view, ex: ng-hide="data.forbidden"
备选方案 2:
controller('MyController', function ($scope, myService) {
$scope.data = function() { return myService.getData(); }
//use data() in functions and in the view, ex: ng-hide="data().forbidden"
备选方案 3:
controller('MyController', function ($scope, myService) {
$scope.forbidden = function() { return myService.getData().forbidden; }
//... one function for each data.member used in this view
//usage in the view: ng-hide="forbidden()"
备选方案 4:使用 $apply 或 $watch
我目前正在使用第二种方法,因为即使没有创建新控制器它也可以工作(考虑同一页面中的不同部分,使用不同的控制器)。
这有什么意义吗?还是有更好的方法?