在我的情况下如何将数据传递给另一个控制器?

时间:2014-11-01 23:45:26

标签: javascript angularjs

我正在尝试从工厂获取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传递给我的子控制器。谢谢你的帮助。

2 个答案:

答案 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在子控制器中检索它。