angularjs正在重复使用前一个视图的控制器。
$window.history.back();
我想在重新加载上一个视图时调用刷新(在某些情况下)。当我“回”到它时,我如何将参数传递给前一个控制器?或者是否有更好的方法使用angularjs向后导航?
向前传递参数很容易通过查询字符串参数完成。
答案 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并使用转换器。