Angularjs 如何将变量从一个作用域转移到另一个作用域?

Angularjs 如何将变量从一个作用域转移到另一个作用域?,angularjs,Angularjs,我希望能够检索SubscribeCtrl(链接到/viewSubscribe-route)的$scope中的“myvar”变量 清洁的方法是什么? 谢谢。好吧,根据用例的不同,有几种方法。以下是按与您的关联程度排序的一些方法: 发送它 通往小路 将其作为路径变量传递,并在路由时定义变量名(在$routeProvider配置中): //某处 $scope.myvar='titi'; $location.path('/viewSubscribe/'+$scope.myvar); // ... //在

我希望能够检索SubscribeCtrl(链接到/viewSubscribe-route)的$scope中的“myvar”变量

清洁的方法是什么?
谢谢。

好吧,根据用例的不同,有几种方法。以下是按与您的关联程度排序的一些方法:

发送它 通往小路 将其作为路径变量传递,并在路由时定义变量名(在
$routeProvider
配置中):

//某处
$scope.myvar='titi';
$location.path('/viewSubscribe/'+$scope.myvar);
// ...
//在模块配置中
app.config(函数($routeProvider){
$routeProvider
.when(“/viewSubscribe/:myVar”{
templateUrl:'views/myView.html',
控制器:“MyCtrl”
})
//等等。
});
然后,您可以将route parameters服务注入到所需位置,并获取路径变量的值:

//其他地方
应用程序控制器('MyCtrl',函数($routeParams,$log){
$log.info($routeParams['myVar']);//-->'titi'
});
开枪 如“已触发事件” 您可以分别使用作用域的
$emit()
$broadcast()
向上或向下的层次结构作用域激发事件,例如:

app.controller('ParentCtrl',函数($scope){
$scope.$watch('model.text',函数(newVal){
$scope.$broadcast('myVarChanged',newVal);
});
});
app.controller('ChildCtrl',函数($scope,$log){
$scope.$on('myVarChanged',函数(myVar){
$log.info(myVar);//-->“titi”
});
});
修好它 就像“永远” 如果将其声明为常量(或值),则还可以将其设置一次,然后到处获取:

//在某个外部级别
应用常数(“myVar”、“titi”);
//任何地方,真的吗
app.controller('MyCtrl',函数(myVar,$log){
$log.info(myVar);//-->“titi”
});
种植它 所以它有根 在根作用域中声明,以便共享给所有作用域:

app.run(函数($rootScope){
$rootScope.myVar='titi';
});
//后来
app.controller('MyCtrl',函数($rootScope,$log){
$log.info($rootScope.myVar);//-->“titi”
$log.info($scope.myVar);//-->“titi”
});

此方法不太推荐,因为它为所有继承的作用域设置了一个公共属性,可以很容易地重写或隐藏(作用域是继承的原型),并且不能与独立的作用域一起使用(即在定义其作用域的指令中)。

好的,有几种方法,具体取决于用例。以下是按与您的关联程度排序的一些方法:

发送它 通往小路 将其作为路径变量传递,并在路由时定义变量名(在
$routeProvider
配置中):

//某处
$scope.myvar='titi';
$location.path('/viewSubscribe/'+$scope.myvar);
// ...
//在模块配置中
app.config(函数($routeProvider){
$routeProvider
.when(“/viewSubscribe/:myVar”{
templateUrl:'views/myView.html',
控制器:“MyCtrl”
})
//等等。
});
然后,您可以将route parameters服务注入到所需位置,并获取路径变量的值:

//其他地方
应用程序控制器('MyCtrl',函数($routeParams,$log){
$log.info($routeParams['myVar']);//-->'titi'
});
开枪 如“已触发事件” 您可以分别使用作用域的
$emit()
$broadcast()
向上或向下的层次结构作用域激发事件,例如:

app.controller('ParentCtrl',函数($scope){
$scope.$watch('model.text',函数(newVal){
$scope.$broadcast('myVarChanged',newVal);
});
});
app.controller('ChildCtrl',函数($scope,$log){
$scope.$on('myVarChanged',函数(myVar){
$log.info(myVar);//-->“titi”
});
});
修好它 就像“永远” 如果将其声明为常量(或值),则还可以将其设置一次,然后到处获取:

//在某个外部级别
应用常数(“myVar”、“titi”);
//任何地方,真的吗
app.controller('MyCtrl',函数(myVar,$log){
$log.info(myVar);//-->“titi”
});
种植它 所以它有根 在根作用域中声明,以便共享给所有作用域:

app.run(函数($rootScope){
$rootScope.myVar='titi';
});
//后来
app.controller('MyCtrl',函数($rootScope,$log){
$log.info($rootScope.myVar);//-->“titi”
$log.info($scope.myVar);//-->“titi”
});

此方法不太推荐,因为它为所有继承的作用域设置了一个公共属性,可以很容易地重写或隐藏(作用域是继承的原型),并且不能与独立的作用域一起使用(即在定义其作用域的指令中)。

好的,有几种方法,具体取决于用例。以下是按与您的关联程度排序的一些方法:

发送它 通往小路 将其作为路径变量传递,并在路由时定义变量名(在
$routeProvider
配置中):

//某处
$scope.myvar='titi';
$location.path('/viewSubscribe/'+$scope.myvar);
// ...
//在模块配置中
app.config(函数($routeProvider){
$routeProvider
.when(“/viewSubscribe/:myVar”{
templateUrl:'views/myView.html',
控制器:“MyCtrl”
})
//等等。
});
然后,您可以将route parameters服务注入到所需位置,并获取路径变量的值:

//其他地方
应用程序控制器('MyCtrl',函数($routeParams,$log){
$log.info($routeParams['myVar']);//-->'titi'
});
开枪 如“已触发事件” 您可以分别使用作用域的
$emit()
$broadcast()
向上或向下的层次结构作用域激发事件,例如:

app.controller('ParentCtrl',函数(
// Somewhere in FooCtrl

$scope.myvar = 'titi'
    $location.path('/viewSubscribe'); // redirection to the subscribe page