我正在努力为控制器提供服务。我曾经把我的http请求放在我的控制器上,但现在我想改进并将http请求放在服务上。但我无法找到不起作用的东西
在我的控制器中
function testCtrl($scope,notify,UserLog) {
$scope.people = {};
$scope.people = UserLog.getUser();
};
在我的服务中
.module('mymodule')
.service('UserLog',function($http){
function getUser(callback) {
var objUserInfo = new ActiveXObject("WScript.network");
var uname = objUserInfo.UserName
var params= "/php/content_user_log.php?uid=" + uname
$http.get(params).
success(function(data, status) {
callback(data,status);
return data;
}).
error(function(data,status){
callback(data,status);
return data;
});
}
});
我厌倦了回调方法和/或返回数据,但我从控制台获得了相同的输出
TypeError: Object doesn't support property or method 'gestUser'
感谢您的帮助
答案 0 :(得分:0)
您无法以这种方式声明成员。您必须将其添加到scope
而不是.module('mymodule')
.service('UserLog', function($http) {
this.getUser = function(callback) {
var objUserInfo = new ActiveXObject("WScript.network");
var uname = objUserInfo.UserName;
var params = "/php/content_user_log.php?uid=" + uname
$http.get(params)
.success(function(data, status) {
callback(data, status);
return data;
})
.error(function(data, status) {
callback(data, status);
return data;
});
};
});
,如下例所示:
.module('mymodule')
.service('UserLog', function($http) {
this.getUser = function() {
var objUserInfo = new ActiveXObject("WScript.network");
var uname = objUserInfo.UserName;
var params = "/php/content_user_log.php?uid=" + uname
return $http.get(params)
.then(function(data, status) {
return data;
});
};
});
此外,考虑使用使用所需数据解析的promise而不是使用calback参数,处理状态和请求不是控制器的责任:
UserLog.getUser()
.then(function (user) {
$scope.user = user;
});
然后这样称呼它:
colors.remove(at: i)