Javascript 在AngularJS中的控制器之间共享来自API的数据
我有一个父控制器和一些子控制器,我希望它们都共享我从Api服务检索的相同数据 控制器: 视图:Javascript 在AngularJS中的控制器之间共享来自API的数据,javascript,angularjs,Javascript,Angularjs,我有一个父控制器和一些子控制器,我希望它们都共享我从Api服务检索的相同数据 控制器: 视图: {{list.item} {{list.item} {{list.item} {{list.item} 我尝试使用Angular的事件机制($on,$emit)解决方案。 问题是,我必须找出哪个子控制器处于活动状态,并在承诺解决后发送数据。它以难看的意大利面代码结尾…由于您的数据在父控制器的作用域中,您可以使用$scope.$parent>在子控制器中访问它: ap
-
{{list.item}
-
{{list.item}
-
{{list.item}
-
{{list.item}
我尝试使用Angular的事件机制($on,$emit)解决方案。问题是,我必须找出哪个子控制器处于活动状态,并在承诺解决后发送数据。它以难看的意大利面代码结尾…由于您的数据在父控制器的作用域中,您可以使用
$scope.$parent>在子控制器中访问它:
app.controller('child1', ['$scope', function($scope) {
$scope.list1 = $scope.$parent.list1;
$scope.list2 = $scope.$parent.list2;
}]);
由于您的数据在父控制器的作用域中,因此您可以使用$scope.$parent
在子控制器中访问它:
app.controller('child1', ['$scope', function($scope) {
$scope.list1 = $scope.$parent.list1;
$scope.list2 = $scope.$parent.list2;
}]);
最好的方法是使用服务
将API处理atomar放在应用程序中。向你展示你如何能达到你想要达到的目标。通过使用,您将能够在控制器之间共享相同的数据、对象和函数,并让它们彼此交互。这取决于应用程序中控制器的数量
下面的示例是一个完整的API服务,具有真实的HTTP请求和真实的AngularJS服务处理。它将帮助您在应用程序中实现这样的逻辑。请不要忘记查看
看法
最好的方法是使用服务
将API处理atomar放在应用程序中。向你展示你如何能达到你想要达到的目标。通过使用,您将能够在控制器之间共享相同的数据、对象和函数,并让它们彼此交互。这取决于应用程序中控制器的数量
下面的示例是一个完整的API服务,具有真实的HTTP请求和真实的AngularJS服务处理。它将帮助您在应用程序中实现这样的逻辑。请不要忘记查看
看法
将子对象编写为指令,然后可以在作用域上注入数据
yourModule.directive('child1', function() {
return {
scope: {list1:'=',
controller: function (scope) {
//not sure you even need a controller, but it might look like this
scope.doSomething = function() {
//access scope.list1 here
}
},
template: '<ul><li ng-repeat="list in list1">{{list.item}}<li><ul>'
}
}
指令('child1',函数(){
返回{
作用域:{list1:'=',
控制器:功能(范围){
//甚至不确定您是否需要控制器,但它可能看起来像这样
scope.doSomething=函数(){
//此处访问scope.list1
}
},
模板:'- {{list.item}
'
}
}
用法:
<child1 list1="list1"></child1>
将子对象编写为指令,然后可以在作用域上注入数据
yourModule.directive('child1', function() {
return {
scope: {list1:'=',
controller: function (scope) {
//not sure you even need a controller, but it might look like this
scope.doSomething = function() {
//access scope.list1 here
}
},
template: '<ul><li ng-repeat="list in list1">{{list.item}}<li><ul>'
}
}
指令('child1',函数(){
返回{
作用域:{list1:'=',
控制器:功能(范围){
//甚至不确定您是否需要控制器,但它可能看起来像这样
scope.doSomething=函数(){
//此处访问scope.list1
}
},
模板:'- {{list.item}
'
}
}
用法:
<child1 list1="list1"></child1>
@Mistalis可能重复是的,他有一个
Api
服务向服务器发出请求,没有任何东西阻止创建另一个服务,负责在控制器之间存储和共享接收到的数据。总之,在我看来,共享角度数据的通用方法是通过@Mistalis可能重复的服务是的,他有一个Api
service要向服务器发出请求,没有什么可以阻止创建另一个服务,该服务将负责在控制器之间存储和共享接收到的数据。无论如何,在angular中共享数据的通用方法是通过服务。更好的方法是使用工厂而不是DOM层次结构控制器绑定。@lin 100%同意,但据我所知,这是关于访问子控制器中的数据。@Mistalis也许我的问题不太清楚,但我希望能够从每个控制器中访问相同的数据,我尝试编写一个服务,但在控制器中得到的只是未定义的值。更好的方法是使用工厂而不是DOM层次结构控制器绑定。@lin 100%同意,但据我所知,这是关于访问子控制器中的数据的问题。@Mistalis可能我的问题不太清楚,但我希望能够从每个控制器访问相同的数据,我尝试编写服务,但在控制器中得到的只是未定义的值。
<child1 list1="list1"></child1>