使用不同的数据

时间:2015-09-25 14:32:52

标签: angularjs singleton angular-ui-router angular-controller

我有一个角度应用程序,允许用户在模态窗口上打开有关产品的详细信息。模态具有相应的url(/ product /:id)。应用程序的一个要求是用户应该能够在彼此之上打开这种状态的多个模态 - 用于他们正在查看的不同产品。例如:/ product / 1,/ product / 2 ...以下是路由的代码:

$stateProvider.state('product', {
url: '/product/:id',
onEnter: ["$modal", function ($modal) {
   $modal.open({
      templateUrl: '/App/product/product.html',
      controller: 'ProductController',
      controllerAs: 'vm'
   });
}]             

});

问题在于,当我为产品打开新模态时,此状态的所有其他先前打开的模态将使用来自最新产品的数据重新运行其ProductController。 如何并行运行一个控制器的不同实例,每个实例包含为其打开的产品的数据?

1 个答案:

答案 0 :(得分:0)

您可以传递一个解析对象,它会从当前作用域中注入所需的数据:

$stateProvider.state('product', {
url: '/product/:id',
onEnter: ["$modal", function ($modal) {
   $modal.open({
      templateUrl: '/App/product/product.html',
      controller: 'ProductController',
      controllerAs: 'vm',
      resolve: {
                            product: function () {
                                $scope.current_roduct= $scope.selected;
                                return $scope.current_roduct;
                            }
                        }
   });
}]             
});