angularJS: 在控制器之间共享过滤后的数据
angularJS: share filtered data between controllers
在控制器之间共享数据是这里经常讨论的话题,我通过创建一个 factory
来解决它,它包含调用我们的 API 的函数,当然还有 returns 我们的数据。
angular.factory('polygonService', ['$resource', polygonService]);
function polygonService($resource) {
var service = {
data: [],
api: $resource(
'url',
{
cityID: '@id'
},
{
get: {
method: 'JSONP',
params: {
callback: 'JSON_CALLBACK'
}
}
}
)
}
return service;
}
现在,此服务中的 data
显示在地图和列表中。这是两个独立的指令和控制器。
list 指令允许用户通过各种属性过滤数据,但过滤后的数据仅在 list 指令的 $scope 内可用。
如何使过滤后的数据可用于地图控制器的 $scope?
我是否必须在服务中创建一个 filteredData
属性 并从地图控制器中 $watch ?
您将需要通过该服务公开过滤后的结果,但您不需要观看它。
在您的控制器中为您的服务设置一个范围变量
$scope.polygonService = polygonService;
然后,您可以从您的控制器访问 $scope.polygonService.filteredData,或从您的视图访问 polygonService.filteredData,两种方式的绑定将按预期工作。
<li ng-repeat="data in polygonService.filteredData">
{{ data }}
</li>
在控制器之间共享数据是这里经常讨论的话题,我通过创建一个 factory
来解决它,它包含调用我们的 API 的函数,当然还有 returns 我们的数据。
angular.factory('polygonService', ['$resource', polygonService]);
function polygonService($resource) {
var service = {
data: [],
api: $resource(
'url',
{
cityID: '@id'
},
{
get: {
method: 'JSONP',
params: {
callback: 'JSON_CALLBACK'
}
}
}
)
}
return service;
}
现在,此服务中的 data
显示在地图和列表中。这是两个独立的指令和控制器。
list 指令允许用户通过各种属性过滤数据,但过滤后的数据仅在 list 指令的 $scope 内可用。
如何使过滤后的数据可用于地图控制器的 $scope?
我是否必须在服务中创建一个 filteredData
属性 并从地图控制器中 $watch ?
您将需要通过该服务公开过滤后的结果,但您不需要观看它。
在您的控制器中为您的服务设置一个范围变量
$scope.polygonService = polygonService;
然后,您可以从您的控制器访问 $scope.polygonService.filteredData,或从您的视图访问 polygonService.filteredData,两种方式的绑定将按预期工作。
<li ng-repeat="data in polygonService.filteredData">
{{ data }}
</li>