Angular JS,工厂返回数据,但在控制器中它消失了
Angular JS, factory returns data, but in controller it is gone
我已经开始学习一些关于AngularJS的知识。我设法创建了一些简单的控制器,但我想做一些重构并创建一个工厂。
这是我的一个js文件:
angular
.module('myApp', ['ngResource'])
.factory('UserFactory', ['$http', function ($http) {
return {
getOne: function () {
$http({method: 'GET', url: 'http://localhost:8080/login/login'})
.success(function (data, status, headers, config) {
console.info(data);
return data;
})
.error(function (data, status, headers, config) {
alert("failure");
});
}
}
}])
.controller('UserController', ['$scope', 'UserFactory', function ($scope, UserFactory) {
$scope.user = UserFactory.getOne();
}]);
程序将数据正确地打印到控制台,从该行的 servlet 接收到控制台:console.info(data);
但控制器不会向视图返回任何内容。我也放在这里console.info(UserFactory.getOne())
,它打印undefined
.
我的编码错误在哪里?
getOne
需要返回一个值,在这种情况下,它将是来自$http的承诺。成功方法应返回控制器所需的值。
.factory('UserFactory', ['$http', function ($http) {
return {
getOne: function () {
return $http({method: 'GET', url: 'http://localhost:8080/login/login'})
.success(function (data, status, headers, config) {
return data;
});
}
}
}]);
现在,您可以在控制器中处理该结果。
app.controller('UserController', ['$scope', 'UserFactory', function ($scope, UserFactory) {
UserFactory.getOne().then(function(data){
$scope.user = data;
});
}]);
success
和failure
方法已折旧。您应该尝试改用then
。
.factory('UserFactory', ['$http', function ($http) {
return {
getOne: function () {
return $http({method: 'GET', url: 'http://localhost:8080/login/login'})
.then(function (response) {
return response.data;
});
}
}
}]);
您的工厂返回错误的位置,因此返回未定义。 您可以通过在控制器本身中处理成功来修复它。 试试这个。
var app = angular.module('plunker', []);
app.factory('UserFactory', ['$http', function ($http) {
return {
getOne: function (callback) {
$http({method: 'GET', url: 'request_url'})
.success(function (data, status, headers, config) {
callback(data, status, headers, config);
})
.error(function (data, status, headers, config) {
alert("failure");
});
}
}
}]);
app.controller('UserController', ['$scope', 'UserFactory', function ($scope, UserFactory) {
UserFactory.getOne(function(data){
$scope.user = data;
});
}]);
工作网址 : 演示
相关文章:
- 为什么js事件消失了
- 从控制器继承了隔离的作用域以生成可重用的指令
- 为什么我的HTML标签消失了
- 带撇号的字母消失了
- 当对象从服务器发送到客户端时,JS原型方法消失了
- 下拉菜单在我进入链接之前消失了
- 当我在tinmyce.int()中编写设置函数时,tinymce消失了,只有纯文本区域可见
- 我搜索了一些东西后,自己添加到谷歌的脚本就消失了
- Webgrid寻呼机在隐藏列Mvc4后消失了
- 为什么我的球消失了
- 为什么当我在 jQuery 中添加切换事件时我的按钮消失了
- 我的饼干消失了
- 某些全局(类)变量在 JavaScript 中消失了?(照片处理)
- 为什么当我对其父元素进行动画处理时,我的 UL 消失了
- 当我通过javascript添加警报并取消事件时,滚动条消失了
- 没有冲突使我的表格消失了
- 为什么我的网页上这个UL的链接和文本消失了
- 当我错过中间的单选按钮时,以前的正确单选按钮消失了
- 为什么我的html img突然消失了,我需要清除缓存
- Angular JS,工厂返回数据,但在控制器中它消失了