我正在构建一个 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
}
}
}
})
在应用程序范围内共享数据并实现我需要的功能的推荐的最佳实践方式是什么?