1

我有一个服务,它发出一个 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 设置重置功能,但它似乎不正确

4

0 回答 0