我有一个服务,它发出一个 GET 请求并传递一个启动参数。开始参数在工厂 this.start++ 内递增
当我单击一个链接时,服务需要发出请求,但 start 参数没有被重置,它只是不断增加。我不想引入重置功能,在调用之前将其设置为 0,因为当我必须跟踪多属性时,这会变得很混乱。
我理解为什么会发生这种情况,因为我的应用程序中只有 1 个工厂实例。但我不知道将工厂重置为其原始状态的角度方式是什么。
有什么建议么?
谢谢你。
编辑
myApp.factory('myFactory', function ($http) {
return{
start: 0,
get: function() {
var that = this;
return $http({
method: 'GET',
url: 'some-url',
params: that.getParams(),
}).success(function(data){
that.start++;
});
},
});
myApp.factory('myFactory1', function (myFactory) {
myFactory.getParams = function() {
return {
limit:10,
custom: true,
name: 'some-name',
start: myFactory.start
};
}
return myFactory;
});
myApp.factory('myFactory2', function (myFactory) {
myFactory.getParams = function() {
return {
limit:5,
custom: false,
surname: 'some-surname'
start: myFactory.start
};
}
return myFactory;
});
因此,在这种情况下,当我单击不同的链接(或浏览器后退/前进)时,调用 myFactory1 或 myFactory2 时,会根据不同的参数获取数据。问题在于,由于服务是单例的,因此启动参数会不断更新。我可以通过 myFacroty1 或 2 设置重置功能,但它似乎不正确