Javascript 如何访问ui.route-oneter方法中的父作用域变量?
我正在使用angularjs和AngularUI路由。在父状态控制器中,我定义了范围变量Javascript 如何访问ui.route-oneter方法中的父作用域变量?,javascript,angularjs,angular-ui-router,angular-ui,Javascript,Angularjs,Angular Ui Router,Angular Ui,我正在使用angularjs和AngularUI路由。在父状态控制器中,我定义了范围变量dataset 如何在子状态oneter方法中访问父状态范围 我试过这个 .state('business.remove', { url: '/remove', onEnter: [...'$scope',..., function (...$scope,...) { ... $scope.$parent.datase
dataset
如何在子状态oneter
方法中访问父状态范围
我试过这个
.state('business.remove', {
url: '/remove',
onEnter: [...'$scope',...,
function (...$scope,...) {
...
$scope.$parent.dataset
但它给出了一个错误
错误:[$injector:unpr]未知提供程序:$scopeProvider根据您对变量的使用,我认为您可能可以执行各种操作 如果您想更改它,可以在父范围内使用
$scope.$emit('eventName',{someData})
和$on('eventName',someFunction)
从下到上使用消息传递,并在您的函数中进行更改
但是如果您试图读取变量,您可以在父级中使用$rootScope
定义该变量并在其他地方使用,或者在服务中定义该变量,然后调用该服务并在需要时操作数据
除此之外,您还可以进一步使用第一种方式(消息传递),使用$broadcast
从父作用域向子作用域发送另一条消息,并在其中发送该变量,以便在子作用域中使用$on
读取该变量。。。巴德,我不知道这是不是一个非常优化的解决方案
希望这对UI路由器有帮助,解析应该用于加载应用程序的主数据。解析可以向下传播到子状态,并有助于管理生命周期;它们在进入状态时加载,在退出状态时消失。您可以在父状态上创建解析,并将其注入父视图或子视图(控制器)和/或oneter/onExit挂钩
.state('business', {
url: '/remove',
resolve: {
dataset: function(someService) {
someService.fetchDataset();
}
},
controller: function(dataset, $scope) {
// do something with dataset
}
.state('business.remove', {
url: '/remove',
onEnter: function (dataset) {
// do something else with dataset
是否要使用父状态范围变量?是的,我要使用父范围变量谢谢。我尽量避免使用rootscope。目前正在按照您对事件的描述进行解决。我想更改父范围中的对象。所以它很有效。你有一个有效的例子吗?我试过了,但在
onEnter
上的未知提供程序
中失败了。为了将来参考,我在这里找到了一个: