0

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);
        });
    }
}

おそらくコントローラー機能に問題があると思います。

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);
        });
    }
}

1つのエントリがコンソールにすぐに表示されます。これ$resourceは、スコープオブジェクトに割り当てられる空のデータです。

データが最終的にサーバーから返されると、そのデータは変数に割り当てられ$scope.user、サーバーの応答からのデータを含むコンソールへの2番目のエントリが表示されます。

于 2013-02-13T21:42:29.593 に答える