使用Angular服务提供数据

时间:2013-06-27 14:55:18

标签: javascript angularjs architecture

我正在建立一个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
        }

    }

  }
})

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

1 个答案:

答案 0 :(得分:1)

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

需要知道所选选项的其他实体可以注入服务并在服务上调用API以检索数据。