1

我有一个 Angular 应用程序,允许用户在模式窗口上打开有关产品的详细信息。模态有相应的 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。如何并行运行一个控制器的不同实例,每个实例都包含打开的产品的数据?

4

1 回答 1

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;
                            }
                        }
   });
}]             
});
于 2015-09-25T14:57:55.287 回答