angular.js工厂变量

时间:2015-10-11 18:30:04

标签: javascript angularjs

我有这个工厂:

app.factory('user', function($http) {
    var state; // logged state

    function login(data) {
        $http.post('/login', {..}).success(function(data) {
            this.state = 1;

        });
        console.log(this.state); // undefined
        return this.state;
    }

    return {
        login: login
    }
});

当我尝试在控制器中使用它时:

app.controller('TestCtrl', function(user) {
    this.login = function() {
        alert(user.login(this.data)); // undefined
    };
});

我做错了什么?我在其他项目中有相同的代码,它在那里工作。

1 个答案:

答案 0 :(得分:1)

成功回调中的

this不引用该服务。这就是为什么你得到一个undefined,除了console.log在回调之外。

如果您在服务开头缓存 this,您应该会有更好的结果:

var service = this;

在回调中,将state存储在service

service.state = 1;