【问题标题】:Open multiple instances of same controller with different data打开具有不同数据的同一控制器的多个实例
【发布时间】:2015-09-25 14:32:52
【问题描述】:

我有一个 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。 如何并行运行一个控制器的不同实例,每个实例都包含打开产品的数据?

【问题讨论】:

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


    【解决方案1】:

    您可以传递一个解析对象,它将从您当前的范围内注入所需的数据:

    $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;
                                }
                            }
       });
    }]             
    });
    

    【讨论】:

      猜你喜欢
      • 2018-03-02
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多