Javascript angularjs-从工厂返回数据时出现问题
我试图创建一个db工厂,在成功发布数据后将数据从数据库返回到客户机,但由于某些原因返回为“未定义” 我的工厂函数如下所示:Javascript angularjs-从工厂返回数据时出现问题,javascript,angularjs,Javascript,Angularjs,我试图创建一个db工厂,在成功发布数据后将数据从数据库返回到客户机,但由于某些原因返回为“未定义” 我的工厂函数如下所示: uno.factory('adbFactory', ['$http', function($http){ var fact = {}; fact.get = function(http, query, isAll) { //var query = "get all blog_posts"; http.post('php/a
uno.factory('adbFactory', ['$http', function($http){
var fact = {};
fact.get = function(http, query, isAll) {
//var query = "get all blog_posts";
http.post('php/adb/adb.php', {'query': query, 'all': isAll})
.success(function(data){
//console.log(data);
return data;
})
.error(function(){
console.log('Error...');
});
};
return fact;
}]);
我的控制器是这样的:
uno.controller('newsCtrl', function($scope, $http, adbFactory){
$scope.derp = 'derp!!!!!';
console.log(adbFactory.get($http, 'get users 1', false));
});
不要担心“getusers1etc”字符串,我在php中创建了一个函数,它根据给定的参数呈现SQL查询。我的工厂代码中是否有需要改进的地方???我建议从工厂返回承诺,并在控制器中处理成功和错误事件
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory.get($http, 'get users 1', false).success(function(data) {
console.log(data);
});
});
我建议从工厂返回承诺,并在控制器中处理成功和错误事件
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory.get($http, 'get users 1', false).success(function(data) {
console.log(data);
});
});
我建议从工厂返回承诺,并在控制器中处理成功和错误事件
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory.get($http, 'get users 1', false).success(function(data) {
console.log(data);
});
});
我建议从工厂返回承诺,并在控制器中处理成功和错误事件
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory.get($http, 'get users 1', false).success(function(data) {
console.log(data);
});
});
fact.get
方法没有返回语句,这就是为什么它返回undefined
此外,这个回调是无用的,因为它是异步调用的
.success(function(data){
//console.log(data);
return data;
})
我想你想要这样的东西:
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory
.get($http, 'get users 1', false)
.success(function(data){
console.log(data);
})
.error(function(){
console.log('Error...');
});
});
fact.get
方法没有返回语句,这就是为什么它返回undefined
此外,这个回调是无用的,因为它是异步调用的
.success(function(data){
//console.log(data);
return data;
})
我想你想要这样的东西:
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory
.get($http, 'get users 1', false)
.success(function(data){
console.log(data);
})
.error(function(){
console.log('Error...');
});
});
fact.get
方法没有返回语句,这就是为什么它返回undefined
此外,这个回调是无用的,因为它是异步调用的
.success(function(data){
//console.log(data);
return data;
})
我想你想要这样的东西:
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory
.get($http, 'get users 1', false)
.success(function(data){
console.log(data);
})
.error(function(){
console.log('Error...');
});
});
fact.get
方法没有返回语句,这就是为什么它返回undefined
此外,这个回调是无用的,因为它是异步调用的
.success(function(data){
//console.log(data);
return data;
})
我想你想要这样的东西:
fact.get = function(http, query, isAll) {
return http.post('php/adb/adb.php', {'query': query, 'all': isAll});
};
uno.controller('newsCtrl', function($scope, $http, adbFactory){
adbFactory
.get($http, 'get users 1', false)
.success(function(data){
console.log(data);
})
.error(function(){
console.log('Error...');
});
});
您必须记住,您正在执行一些异步请求 有两种方法可以检索数据:
- 遵循回调方式
- 信守诺言
- 解决(价值):通过给她最终的价值来解决我们相关的承诺
- 拒绝(原因):用于解决承诺错误
(function(){
function Service($http, $q){
var defer = $q.defer();
//Callback way
function get(callback){
$http.get('app.php').success(function(data){
//Pass our data to the callback
callback(data);
});
}
//Promise ways
function getPromise(){
$http.get('app.php').success(function(data){
//Resolve the data
defer.resolve(data);
});
//Return our promise
return defer.promise;
}
return {
get: get,
getPromise: getPromise
};
}
angular
.module('app')
.factory('Service', Service);
})();
控制器
(function(){
function Controller($scope, Service) {
//Our callback method
function print(data){
console.log(data);
}
//Retrieve our data by using callback way
Service.get(print);
//Retrieve our data by using promise way
var promise = Service.getPromise();
//When promise is resolved
promise.then(function(data){
//Retrieve our data
console.log(data);
});
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();
但是我应该用什么呢?我认为使用承诺比回调好,因为您可以轻松处理您的请求。此外,您可以执行承诺链接,避免著名的回调地狱您必须记住,您正在执行一些异步请求 有两种方法可以检索数据:
- 遵循回调方式
- 信守诺言
- 解决(价值):通过给她最终的价值来解决我们相关的承诺
- 拒绝(原因):用于解决承诺错误
(function(){
function Service($http, $q){
var defer = $q.defer();
//Callback way
function get(callback){
$http.get('app.php').success(function(data){
//Pass our data to the callback
callback(data);
});
}
//Promise ways
function getPromise(){
$http.get('app.php').success(function(data){
//Resolve the data
defer.resolve(data);
});
//Return our promise
return defer.promise;
}
return {
get: get,
getPromise: getPromise
};
}
angular
.module('app')
.factory('Service', Service);
})();
控制器
(function(){
function Controller($scope, Service) {
//Our callback method
function print(data){
console.log(data);
}
//Retrieve our data by using callback way
Service.get(print);
//Retrieve our data by using promise way
var promise = Service.getPromise();
//When promise is resolved
promise.then(function(data){
//Retrieve our data
console.log(data);
});
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();
但是我应该用什么呢?我认为使用承诺比回调好,因为您可以轻松处理您的请求。此外,您可以执行承诺链接,避免著名的回调地狱您必须记住,您正在执行一些异步请求 有两种方法可以检索数据:
- 遵循回调方式
- 信守诺言
- 解决(价值):通过给她最终的价值来解决我们相关的承诺
- 拒绝(原因):用于解决承诺错误
(function(){
function Service($http, $q){
var defer = $q.defer();
//Callback way
function get(callback){
$http.get('app.php').success(function(data){
//Pass our data to the callback
callback(data);
});
}
//Promise ways
function getPromise(){
$http.get('app.php').success(function(data){
//Resolve the data
defer.resolve(data);
});
//Return our promise
return defer.promise;
}
return {
get: get,
getPromise: getPromise
};
}
angular
.module('app')
.factory('Service', Service);
})();
控制器
(function(){
function Controller($scope, Service) {
//Our callback method
function print(data){
console.log(data);
}
//Retrieve our data by using callback way
Service.get(print);
//Retrieve our data by using promise way
var promise = Service.getPromise();
//When promise is resolved
promise.then(function(data){
//Retrieve our data
console.log(data);
});
}
angular
.module('app', [])
.controller('ctrl', Controller);
})();
但是我应该用什么呢?我认为使用承诺比回调好,因为您可以轻松处理您的请求。此外,您可以执行承诺链接,避免著名的回调地狱您必须记住,您正在执行一些异步请求 有两种方法可以检索数据:
- 遵循回调方式
- 信守诺言
- 解决(价值):通过给她最终的价值来解决我们相关的承诺
- 拒绝(原因):用于解决承诺错误