当我使用angularjs导航回来时如何传递参数

时间:2014-03-21 19:48:06

标签: javascript angularjs

当我向后导航时,

angularjs正在重复使用前一个视图的控制器。

$window.history.back();

我想在重新加载上一个视图时调用刷新(在某些情况下)。当我“回”到它时,我如何将参数传递给前一个控制器?或者是否有更好的方法使用angularjs向后导航?

向前传递参数很容易通过查询字符串参数完成。

1 个答案:

答案 0 :(得分:0)

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

这是在服务中获取/设置控制器状态数据的快速而肮脏的示例,目的是在控制器的多个实例之间保持数据。

控制器:

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并使用转换器。