角度,控制器之间共享(在填充后?)
angular, sharing between controllers (after it's been populated?)
我正在尝试在具有角度的控制器之间共享一些信息。我知道这并不难,我在这里找到了一些很好的例子,但我有一个奇怪的场景,我是如何引入和更改我试图共享的数据的。我试图应用我发现的其他一些例子来实现这一点,但似乎无法实现,所以我会尽可能清楚地解释。
问题
我想做的是直截了当的。我试图在控制器之间共享一些下拉列表值。因此,无论它在着陆时有什么值,以及它何时发生变化,都会显示在另一个控制器中。
问题是,我已经建立了一个大工厂,所有的控制器都从它调用来填充它们的输入,有10个控制器,每个控制器都有一堆输入,在着陆时必须填充,所以我有一个工厂,为存储在vars中的每个$http调用都有一个$q.all函数,然后调用另一个调用以查看是否保存了任何数据,并将默认值更改为保存的值如果可能的话,我更愿意保留这种方法。我在任何地方都用它,改变它可能会很痛苦。
所以工厂看起来像:
var criteria1 = $http({method: "GET", url: "/crit1"});
var criteria2 = $http({method: "GET", url: "/crit2"});
var criteria3 = $http({method: "GET", url: "/crit3"});
return {
critera: $q.all([criteria1 ,criteria2, criteria3])
}
在控制器中,我做了一个:
getDefaults.criteria.then(function(data){
//fill out defaults and values for selects with this data
//then get saved data (if any)
$http({
method: "GET",
url: "/getsavedData/" + sectionID
})
.success(function(data, status, headers, config){
//if data !null then overrite scopes for defaults
};
因此,我要做的是与另一个控制器共享该控制器上2个选择列表的值。我得到了这个例子——http://jsfiddle.net/HB7LU/6510/.但我似乎不知道如何将其应用于我正在做的事情。主要是因为数据是在需要共享的控制器之外确定的。我试图避免这种情况,但如果这是最好的方式,那么我可能应该改变它
我希望输入填充,获得默认值,然后与控制器共享信息(并在信息发生变化时共享)。如果我能做一些类似于双向数据绑定的事情,但在控制器之间,这将是理想的,所以我要馈送的控制器总是馈送选择列表答案的信息。我已经为此挣扎了一段时间,这应该很容易,我想我只是想错了。任何指示都将不胜感激。感谢您抽出时间阅读!
不确定这是否是您想要的,但创建一个"服务"并从其他控制器中侦听它可能会派上用场。这里提到了这样的事情:https://stackoverflow.com/a/19469131/2658127
您可以将<input>
更改为您想要的任何内容。
您可以使用事件。
范围文件
在此检出$on
、$broadcast
和$emit
。
在一般用例中,angular.element(catapp).scope()
的使用是为在角度控制器之外使用而设计的,比如在jquery事件中。
理想情况下,在您的使用中,您将在控制器1中写一个事件为:
$scope.$on("myEvent", function (event, args) {
$scope.rest_id = args.username;
$scope.getMainCategories();
});
在第二个控制器中,你只需要进行
$scope.initRestId = function(){
$scope.$broadcast("myEvent", {username: $scope.user.username });
};
编辑:意识到这是两个模块之间的通信
您可以尝试将firstApp
模块作为声明angular.module
的secondApp
的依赖项。这样你就可以与其他应用程序进行通信。
- 在指令控制器中使用$attrs时出现问题
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- 从填充了 AJAX 的下拉列表中获取控制器的操作方法中的值
- 如何将数据从 angularJS 工厂填充到控制器
- 在模板angularJs中从控制器填充id属性的值
- 控制器操作参数未从 AJAX 开机自检正确填充
- 控制器值未正确填充
- AngularJs 不显示从控制器填充的列表
- 角度,控制器之间共享(在填充后?)
- 如何使用AngularJs、Ui Router和MongoDB轮询数据库并填充控制器
- angularjs用现有控制器中的REST服务填充作用域变量
- 数组的字符串填充的数据在jquery中,但去空控制器
- Angularjs PHP $http和在控制器中填充$scope的数据
- 主干-在我的控制器中从一个fetch调用填充多个模型
- 如何通过Ajax填充范围变量得到控制器内部
- 为什么select2控件没有通过AngularJS控制器填充动态数据?
- 下拉框没有使用ajax和控制器动作填充
- 当尝试绑定ajax和控制器动作时,下拉菜单没有填充
- 用控制器返回的值填充图表
- 如何访问AngularJS控制器中由$resource get()填充的数组