Javascript 使用angularjs返回时如何传递参数

Javascript 使用angularjs返回时如何传递参数,javascript,angularjs,Javascript,Angularjs,当我向后导航时,angularjs正在重新使用上一个视图的控制器 $window.history.back(); 我想在重新加载上一个视图时调用刷新(在某些情况下)。在“返回”前一个控制器时,如何将参数传递给前一个控制器?还是有更好的方法可以使用angularjs向后导航 通过查询字符串参数可以轻松地向前传递参数 通过创建自定义服务,然后将该服务注入到您想要的任何控制器中,可以轻松地在控制器之间传递数据 下面是一个快速而肮脏的示例,它获取/设置服务中控制器的状态数据,目标是在控制器的多个实例化

当我向后导航时,angularjs正在重新使用上一个视图的控制器

$window.history.back();
我想在重新加载上一个视图时调用刷新(在某些情况下)。在“返回”前一个控制器时,如何将参数传递给前一个控制器?还是有更好的方法可以使用angularjs向后导航


通过查询字符串参数可以轻松地向前传递参数

通过创建自定义服务,然后将该服务注入到您想要的任何控制器中,可以轻松地在控制器之间传递数据

下面是一个快速而肮脏的示例,它获取/设置服务中控制器的状态数据,目标是在控制器的多个实例化之间持久化数据

控制器:

var list;

list = angular.module('app.list', ['services.controller_state']);

list.controller('ListCtrl', [
  '$scope', 'ControllerState', function($scope, ControllerState) {
    var savedParams;
    savedParams = ControllerState.getParams();
    savedParams.data1 = "changed";
    return ControllerState.setParams(savedParams);
  }
]);
服务:

var module;

module = angular.module("services.controller_state", []);

module.factory("ControllerState", function() {
  var params;
  params = {
    data1: "foo",
    data2: "bar",
    data3: "zig",
    data4: "zag"
  };
  return {
    getParams: function() {
      return params;
    },
    setParams: function(prms) {
      var item, _results;
      _results = [];
      for (item in prms) {
        _results.push(params[item] = prms[item]);
      }
      return _results;
    }
  };
});

如果JavaScript看起来很时髦,那是因为我主要编写CoffeeScript并使用转换器。

谢谢,这是一个不错的选择。我仍然在想,我可能遗漏了一个更简单的答案,更具体地说,它与向后导航的主题有关,考虑到控制器/作用域对在您离开时被破坏(再见数据),并且向后功能使用历史记录中存储的URL(没有新的查询参数),使用服务可能是您唯一的选择。除非你能通过编辑URL历史记录和修改存储的查询参数来实现某种魔力。我不知道有什么办法可以做到这一点。好的,这很有趣。在我的例子中,当我导航离开时,控制器并没有被破坏,但我正在使用ngView并加载部分。当我返回时,上一个控制器实例正在被重新使用。有没有办法强制它实例化一个新的控制器?