我发现来自angularjs网站的文件说我可以在我的工厂做点什么:
var speicialProducts = [];
factory.getFeatureProducts = function () {
if ($.isEmptyObject(specialProducts)) {
specialProducts = $resource('index.php/products/featureProducts').query().$promise.then(function(data){
return data;
// return data.content;
});
}
return specialProducts;
}
然后在我的控制器中我做:
$scope.specialProducts = specialProductFactory.getFeatureProducts();
但不知何故,当正确返回数据时,angularjs不会填充范围模型。
我确实尝试过:
var speicialProducts = [];
factory.getFeatureProducts = function () {
if ($.isEmptyObject(specialProducts)) {
specialProducts = $resource('index.php/products/featureProducts').query();
}
return specialProducts;
}
这是有效的,但是我想做一些事情来将部分返回的数据分配给specialProducts而不是整个返回的数据(就像我在第一个代码示例的注释部分中所做的那样 返回数据。内容 )。那么我能做出的任何想法都有效吗?
如果有一些jsfiddle例子会很棒。 感谢
答案 0 :(得分:1)
试试这个
if ($.isEmptyObject(specialProducts)) {
$resource('index.php/products/featureProducts').query().$promise.then(function(data){
angular.foreach(data,function(item) {
specialProducts.push(item);
});
});
}
但是在您的控制器中,您需要知道何时从远程调用返回数据,您可以通过specialProducts
数组查看。
更新:最好使用promises,但在这种情况下
$scope.specialProducts = specialProductFactory.getFeatureProducts();
将来会填充数组。要知道何时需要观看
$scope.$watchCollection("specialProducts",function(data) { //Called when data updated});
我强烈建议您使用基于promise的API并使用then
方法来处理异步响应。