无法将查询传递给$ resource服务

时间:2013-02-13 20:36:53

标签: angularjs

我有一个控制器查询PHP脚本(通过$ resource服务)。 PHP返回JSON。控制器使用名为“userUsername”的ng-model输入。我可以看到没有任何东西被发送到PHP文件。我将在控制台中返回此内容:

h {usernameTyped: null, $get: function, $save: function, $query: function, $remove: function…}

app.js

var userAppModule = angular.module("userApp", ["ngResource"]);
userAppModule.factory("User", function($resource) {
    return $resource("php/login-process.php/:username", {}, {
        query: {method: "GET"}
    });
});

controllers.js

function LoginCtrl($scope, $route, $routeParams, $location, User) {
    $scope.loginUser = function() {
        $scope.userQuery = User.query({username: $scope.userUsername}, function(res) {
            console.log(res);
        });
    }
}

我想我可能在控制器功能上出了问题。

1 个答案:

答案 0 :(得分:0)

你几乎是对的:问题是回调。在你的情况下,第一个参数res实际上是资源对象。

在这种情况下,您不需要回调,因为ngResource旨在能够在没有回调的情况下工作:

function LoginCtrl($scope, $route, $routeParams, $location, User) {
    $scope.loginUser = function() {
        $scope.user = User.query({username: $scope.userUsername});

        // Just throwing a watch in here to see what happens
        // to $scope.user
        $scope.$watch('user', function(newValue, oldValue) {
            console.log("user:", newValue, oldValue);
        });
    }
}

您会看到一个条目立即显示在控制台中,这是$resource将分配给您的范围对象的空数据。

当数据最终从服务器返回时,它将被分配给$scope.user变量,您应该看到第二个带有服务器响应数据的控制台条目。