Angularjs 如何将值传递给父控制器?

Angularjs 如何将值传递给父控制器?,angularjs,Angularjs,我正在用AngularJS构建一个web应用程序,在将数据从子视图控制器传递到父视图控制器时遇到了问题 在页面加载时,我从服务获取数据(例如用户名) 我想将此值传递给母版页,但当前无法将该值传递给母版页控制器。因此,我从我的服务请求数据两次(每页一次) 如何与父视图共享此值?您可以使用$rootScope.yourVariable而不是$scope.yourVariable。您可以使用$rootScope.yourVariable而不是$scope.yourVariable。案例1: 使用$em

我正在用AngularJS构建一个web应用程序,在将数据从子视图控制器传递到父视图控制器时遇到了问题

在页面加载时,我从服务获取数据(例如用户名)

我想将此值传递给母版页,但当前无法将该值传递给母版页控制器。因此,我从我的服务请求数据两次(每页一次)


如何与父视图共享此值?

您可以使用$rootScope.yourVariable而不是$scope.yourVariable。

您可以使用$rootScope.yourVariable而不是$scope.yourVariable。

案例1:

使用
$emit
事件将值从子控制器传递到父控制器

案例2:

使用
$broadcast
事件将值从父控制器传递到子控制器

在其他控制器中,其接收方式为:

$scope.$on("Some Value", function(event, value){
  console.log(value);
});
$scope.$on("Some Value", function(event, value){
  console.log(value);
});
案例3:

如果控制器是同级的,则使用
$rootscope
$broadcast
事件

 $rootscope.$broadcast("Some Value", $scope.someVar);
在其他控制器中,其接收方式为:

$scope.$on("Some Value", function(event, value){
  console.log(value);
});
$scope.$on("Some Value", function(event, value){
  console.log(value);
});
示例:

在本例中,我使用了
$timeout
,它将被您的服务呼叫所取代。变量将在超时调用中提到的2秒后更新

angular
.模块(“应用程序”,[])
.controller(“ParentCtrl”,函数($scope,$timeout){
$scope.parentVar=“此变量属于ParentCtrl”;
$scope.childSharedValue=“等待ChildCtrl传递值”;
$scope.$on(“子值”,函数(事件,值){
$scope.childSharedValue=值;
});
$timeout(函数(){
$scope.$broadcast(“父值”、$scope.parentVar);
}, 2000);
})
.controller(“ChildCtrl”,函数($scope,$timeout){
$scope.childVar=“此变量属于ChildCtrl”;
$scope.parentSharedValue=“等待ParentCtrl传递值”;
$scope.$on(“父值”,函数(事件,值){
$scope.parentSharedValue=值;
});
$timeout(函数(){
$scope.$emit(“子值”,$scope.childVar);
}, 2000);
})

父值:{{parentVar}}
子共享值:{{childSharedValue}}

子值:{{childVar}}
父共享值:{parentSharedValue}}

案例1:

使用
$emit
事件将值从子控制器传递到父控制器

案例2:

使用
$broadcast
事件将值从父控制器传递到子控制器

在其他控制器中,其接收方式为:

$scope.$on("Some Value", function(event, value){
  console.log(value);
});
$scope.$on("Some Value", function(event, value){
  console.log(value);
});
案例3:

如果控制器是同级的,则使用
$rootscope
$broadcast
事件

 $rootscope.$broadcast("Some Value", $scope.someVar);
在其他控制器中,其接收方式为:

$scope.$on("Some Value", function(event, value){
  console.log(value);
});
$scope.$on("Some Value", function(event, value){
  console.log(value);
});
示例:

在本例中,我使用了
$timeout
,它将被您的服务呼叫所取代。变量将在超时调用中提到的2秒后更新

angular
.模块(“应用程序”,[])
.controller(“ParentCtrl”,函数($scope,$timeout){
$scope.parentVar=“此变量属于ParentCtrl”;
$scope.childSharedValue=“等待ChildCtrl传递值”;
$scope.$on(“子值”,函数(事件,值){
$scope.childSharedValue=值;
});
$timeout(函数(){
$scope.$broadcast(“父值”、$scope.parentVar);
}, 2000);
})
.controller(“ChildCtrl”,函数($scope,$timeout){
$scope.childVar=“此变量属于ChildCtrl”;
$scope.parentSharedValue=“等待ParentCtrl传递值”;
$scope.$on(“父值”,函数(事件,值){
$scope.parentSharedValue=值;
});
$timeout(函数(){
$scope.$emit(“子值”,$scope.childVar);
}, 2000);
})

父值:{{parentVar}}
子共享值:{{childSharedValue}}

子值:{{childVar}}
父共享值:{parentSharedValue}}

那么您尝试了什么?插入一些代码..那么您尝试了什么?插入一些代码你可以,但你不应该你可以,但你不应该