Angularjs重置工厂状态

时间:2014-05-20 23:18:14

标签: angularjs angularjs-service angularjs-factory

我有一个服务,它发出一个GET请求并传递一个启动参数。起始参数在工厂内递增     this.start ++

当我点击一个链接时,服务需要发出请求,但是start参数没有被重置,它只是不断递增。我不想在调用之前引入重置函数将其设置为0,因为当我必须跟踪multie属性时会变得混乱。

我理解为什么会发生这种情况,因为我的应用中只有一个工厂实例。 但我不知道将工厂重置为原始状态的角度方式是什么。

有什么建议吗?

谢谢。

修改

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,根据不同的参数获取GET数据。问题是,由于服务是单例,因此启动参数不断更新。我可以通过myFacroty1或2复位功能,但看起来不对

0 个答案:

没有答案