【发布时间】:2015-09-21 16:34:59
【问题描述】:
我有一个factory 从数据库中获取包含我所有客户的数组。
然后我需要按人 id 过滤这个数组,并在一个页面中只显示它的数据。
我已经有一个工作代码,但它只在controller 内,我想将它与factory 和directive 一起使用,因为我不再使用ng-controller 和这个factory调用我需要显示客户数据的其他页面。
这就是我试图用我的factory 做的事情:
app.js
app.factory('mainFactory', function($http){
var getCliente = function($scope) {
return $http.get("scripts/php/db.php?action=get_cliente")
.success( function(data) {
return data;
})
.error(function(data) {
});
};
var getDetCliente = function($scope,$routeParams) {
getCliente();
var mycli = data;
var myid = $routeParams.id;
for (var d = 0, len = mycli.length; d < len; d += 1) {
if (mycli[d].id === myid) {
return mycli[d];
}
}
return mycli;
};
return {
getCliente: getCliente,
getDetCliente: getDetCliente
}
});
app.directive('detClienteTable', function (mainFactory) {
return {
restrict: "A",
templateUrl: "content/view/det_cliente_table.html",
link: function($scope) {
mainFactory.getDetCliente().then(function(mycli) {
$scope.pagedCliente = mycli;
})
}
}
});
detClient.html
<p>{{pagedCliente.name}}</p>
<p>{{pagedCliente.tel}}</p>
<p>{{pagedCliente.email}}</p>
[...more code...]
问题是,我无法在页面中显示任何数据,而且我的控制台中没有错误。
可能有什么问题?
请记住,我正在学习 AngularJS。
【问题讨论】:
-
我做的一件事是返回 promise 本身,然后工厂的消费者定义他们自己的
.success行为。不确定这是否是“最佳实践”,但它对我有用。 -
请注意 var mycli = data; 中的“data”未定义。
标签: angularjs promise angularjs-service angular-promise angularjs-factory