我正在尝试从工厂获取http请求数据,处理父控制器中的数据并传回工厂以供我的子控制器访问它。
我有类似
的东西父控制器
myFactory.makeApi(id)
.then(function(data) {
//process data here...
//I want to pass productDetail back to my factory and let
//my child controller use it
$scope.productDetail = productDetail;
})
儿童控制器
//I want to get the productDetail through parent' $scope.productDetail.
//but not sure how to get it.
myFactory.getProductDetail ???
myFactory
service.makeApi = function(id) {
return getProduct(id)
.then(function(httpObj) {
return httpObj.data;
})
}
var getProduct = function(id) {
return $http.post('/api/product/getProduct/' + id)
}
基本上我不知道如何将productDetail传递给我的子控制器。谢谢你的帮助。
答案 0 :(得分:1)
您可以广播像
这样的数据记录事件 $scope.broadcast("datarecieved", data);
在孩子中你可以收到这些数据
$scope.$on("datarecieved",function(data){
//do something
})
在你的情况下,你可以做到这一点
父代码
myFactory.makeApi(id)
.then(function(data) {
//process data here...
//I want to pass productDetail back to my factory and let
//my child controller use it
$scope.productDetail = productDetail
$scope.broadcast("datarecieved", productDetail);
})
在孩子身上
$scope.$on("datarecieved",function(data){
//do something
})
答案 1 :(得分:1)
通过父控制器和子控制器,我假设您的意思是嵌套。
如果是这种情况,则子$scope
原型继承自父$scope
,因此您可以使用$scope.productDetail
在子控制器中检索它。