【问题标题】:handling data between two views in angular以角度处理两个视图之间的数据
【发布时间】:2013-04-01 22:31:27
【问题描述】:

我有两个视图,我使用路由来访问它们。我的主要视图是一个使用ListController 的列表。

该控制器执行$http 请求并获取一些数据,然后在success 上执行:$scope.data = response.data;

当我点击一个列表项时,我的路线转到#/view/:id

我可以在我的另一个控制器中使用routeParams 获得idDetailController

由于$scope.dataListController 的一部分,我如何在DetailController 中访问$scope.data

(或至少将$scope.data[some Id] 传递给DetailController

编辑

app.factory('dataService', function(data)
{
  var data = data;
  return data;
});

答案是把它放在我的DetailController 中。 response.data 我仍然可以使用

presentationService().then(
    function success(response)
    {
        log(response.data);
    },
    function error(response)
    {
        log(response);
    }
);

【问题讨论】:

  • dataService 应该发出 $http 请求
  • @charlietfl 查看我对 InviS 帖子的最后评论
  • 这是另一种不需要在控制器 plunker.co/edit/o0opykZ7QOPfxGZCRNFp?p=preview 中使用 then 的方式
  • @charlietfl 我更喜欢这种方法而不是我想出的方法。由于我在 $scope.presentations 变量上使用 ng-repeat,因此不会填充列表。如何从列表控制器中判断请求何时完成?
  • 不应该检查它是否完成,范围对象上的侦听器将在数据更改时修改 DOM。将响应推送到空数组的循环是当前正在更改数据的内容。我试图找出另一种使用承诺从 $http 更新服务中数据的方法。还没有找到解决方案

标签: javascript angularjs routes


【解决方案1】:

您不应使用范围在控制器之间共享数据。改用服务。 观看这部短片:http://egghead.io/video/angularjs-sharing-data-between-controllers/

希望对你有帮助。

【讨论】:

  • 好的,我正在努力让它工作。在我的 http 成功函数中,我正在做 function success(response) { dataService(response.data) } 并且我得到 dataService 未定义。`我将在我的问题中发布我的工厂。我想我做错了。另外,我将dataService 传递给我的ListController
  • 将您的 $http 任务投入服务。您将能够在服务内缓存数据。并且数据将能够共享。
  • 我的http请求已经是服务了。让我们让这件事变得更容易......这是一个馅饼:pastie.org/7273427
  • 发出 $http 请求的服务也应该在控制器之间共享数据。
  • 我明白你在说什么,但我无法让它工作。我正在观看另一个有关其工作原理的 youtube 视频
猜你喜欢
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多