使用工厂和控制器返回数据
Using a factory and controller to return data
我有以下工厂:
app.factory('clientFactory', function ($http) {
var factory = {};
factory.getClients = function () {
var url = "/tracker/api/client";
$http.get(url).then(function (response) {
return response.data;
});
};
factory.getClient = function (id) {
// TODO
};
factory.insertClient = function (firstName, lastName, city) {
// TODO
};
factory.deleteClient = function (id) {
// TODO
};
return factory;
});
控制器:
app.controller('ClientController', function ($scope, clientFactory) {
$scope.clients = [];
init();
function init() {
$scope.clients = clientFactory.getClients();
}
$scope.insertCustomer = function () {
// TODO
};
$scope.deleteCustomer = function (id) {
// TODO
};
});
在我的控制器中,"clients"始终为null。我尝试了其他几种方法,就像我在这里看到的那样,但我遇到了一个错误,"成功不能在null上调用",如果我成功了,我的成功函数就永远不会被调用。
我在这里错过了什么?
在控制器中,您将getClients
方法视为同步方法。请记住,当执行$http.get
时,会返回一个承诺。您需要将该promise返回给控制器,这样它就可以使用一个处理成功结果的方法来调用.then
。
您的getClients
方法需要如下所示:
factory.getClients = function () {
var url = "/tracker/api/client";
return $http.get(url);
};
我相信你的init
方法需要看起来像这样:
function init() {
clientFactory.getClients().then(function(response) {
$scope.clients = response.data;
});
}
试试看!
相关文章:
- AJAX调用并在Node中获取返回数据
- 角度服务未返回数据
- 统计ajax返回数据中的html元素
- 有没有更好的方法可以测量从Ajax调用返回数据所需的总时间
- Imgur API图像搜索未返回数据
- javascript对象显示为null,但object.properties返回数据
- 如何从ajax调用JQuery返回数据
- 试图从嵌套的回调函数返回数据
- NodeJS FS 不从多个文件返回数据
- ajax函数未在C#中返回数据
- 如何在公共js模块中从web服务返回数据
- 将字符串与 JSON 对象组合以返回数据
- 嵌套异步函数未及时返回数据的问题
- NodeJS JSONStream 以一个长字符串的形式返回数据
- 如何使用 HTML 图像请求将数据发送到服务器,或返回数据作为响应
- 从 Angular 模态服务中的模态主体模板返回数据
- jQuery 每个循环返回数据两次
- $.getJSON 在返回数据后不会运行函数
- 如何访问返回数据中的特定json值
- 工厂返回数据后未设置角度$scope