2013-11-25 33 views
0

我有一个多步表单,第一步的信息应该可用于下一个。将信息从视图传递到视图

如何在视图之间共享此信息?我应该在$rootScope附加模型还是创建一个通用的父控制器?

+0

这里的一个[非常原始的演示](http://plnkr.co/edit/3UW36wlpBjgCsSy7s0G2?p=preview)的3种形式,每个都有自己的控制器,共享数据从服务 – charlietfl

回答

2

创建一个服务来存储共享项目,因为服务是单例。这是一个任意的例子。

sharedDataExampleModule.service('SharedData', function(){ 
    var data = {}; 
    // API to get/set shared data 
    return { 
     getData: function(){}, 
     setData: function(data){} 
    }; 
}); 

将服务注入任何需要访问数据的控制器。

sharedDataExampleModule.controller('ControllerA', function($scope, SharedData){ 
    // set data 
    SharedData.setData($scope.objectContainingOurSharedData); 
}); 

sharedDataExampleModule.controller('ControllerB', function($scope, SharedData){ 

    // get data 
    $scope.shared = SharedData.getData(); 
}); 
+1

最有效的。 :) –

1

第一个视图控制器,传递对象PARAM:

function FirstViewController($scope) { 
    $http.post(url).success(function(objModel){ 
     $scope.objModel = objModel; 
    }).error(function(msg){ 
     console.log(msg); 
    }); 
} 

第二个视图控制器,得到PARAMS:

function SecondViewController($scope, $params) { 
    var objModel = $params.objModel; 
} 

我希望能帮助你。