0

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

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

应用程序.js

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

控制器.js

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

我想我的控制器功能可能有问题。

4

1 回答 1

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变量,您应该会在控制台中看到第二个条目,其中包含来自服务器响应的数据。

于 2013-02-13T21:42:29.593 回答