我有一个控制器查询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);
});
}
}
我想我可能在控制器功能上出了问题。
答案 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
变量,您应该看到第二个带有服务器响应数据的控制台条目。