0

我正在构建一个 SPA,可以在其中打开一个包含选项列表的对话框窗口。用户可以选择一个选项,然后该选项应附加到应用程序的主视图(如:从对话框中选择A ,然后将A附加到<ul>首页上的一个)。

该对话框是独立的,有自己的模块和控制器:

var AdviceList = angular.module('adviceList', []);

AdviceList.controller('AdviceListCtrl',function($scope,$http){
   //...
});

AdviceList.provider('$adviceList',function(){
  this.$get = function ($rootScope,$document,$compile,$http){

    function AdviceList(){
      // ...
    }

    AdviceList.prototype.open = function(){
        // ...
    }
})

我不明白如何与我的应用程序的其余部分共享所选选项的列表。

我的方法是创建一个数组activeOptions并将其附加到控制器的范围内,但在这种情况下,提供者将无法访问:

AdviceList.controller('AdviceListCtrl',function($scope,$http){

    $scope.activeOptions = [];

    $scope.addAdvice = function(){

        $scope.activeOptions.push(); // push the chosen option

    }
 });


AdviceList.provider('$adviceList',function(){

this.$get = function ($rootScope,$document,$compile,$http){

    return{

        AdviceList: function(){
            return new AdviceList();
        },

        getActive: function(){
           // no access to the controllers scope here
        }

    }

  }
})

在应用程序范围内共享数据并实现我需要的功能的推荐的最佳实践方式是什么?

4

1 回答 1

1

将选择的选项存储在服务/提供者中。在您的服务上提供 API 以存储所选选项。让您的 AdviceListCtrl 调用该 API/函数来存储选项。

其他需要知道选择的选项是什么的实体可以注入服务并调用服务上的 API 来检索数据。

于 2013-06-27T15:35:33.500 回答