gpt4 book ai didi

javascript - AngularJS 与 ui-router : Changing value of a parent dependency of from child's controller

转载 作者:行者123 更新时间:2023-12-03 12:02:16 25 4
gpt4 key购买 nike

环境:具有嵌套状态的 AngularJS 应用程序(使用 UI Router)。

简短版本:如何从子 Controller 内部更改父状态依赖项的值,以便子状态的同级(也使用该依赖项)将获得新值.

长版:采用以下配置:

shopApp.config(function($stateProvider) {
$stateProvider.state('shop', {
url : '/shop',
templateUrl : 'shop.html',
resolve : {
user : function($q) {
// callback that ends up returning null
// because the user is not logged in
}
},
controller: function($scope, user) {
// user is null at this point
$scope.user = user;
}
}).state('shop.login', {
url : '/login',
templateUrl : 'login.html',
controller : function($scope) {
// onLoggedIn is called from some form-processing
// logic once the user has successfully logged in
$scope.onLoggedIn = function(userObject) {
// I want the shop.userDetails state's controller
// to get the new $scope.user value
$scope.user = userObject;
$state.go('^.userDetails');
};
}
}).state('shop.userDetails', {
url : '/userDetails',
templateUrl : 'userDetails.html',
controller : function($scope, user) {
// Unfortunately user is null here
$scope.user = user;
}
});
});

shop.login 状态的 Controller 有一个名为 onLoggedIn 的函数,一旦用户成功登录就会调用该函数。包含用户信息的对象被传递给此函数。从现在开始,我希望 user 依赖项的所有解析都使用此值(即 userObj)。不幸的是,我没有使用我刚刚分配给 $scope.user 的值,而是传递给 shop.userDetails Controller 的值是最初在创建 shop 状态 Controller 时解决的问题。

有人知道该怎么做吗?如果我做错了,请告诉我。

最佳答案

实现您想要的操作的一种方法是定义一个 UserDetailsS​​ervice 来保存登录的用户信息。您可以在登录时设置用户信息并使用该服务解析 user 值。

关于javascript - AngularJS 与 ui-router : Changing value of a parent dependency of from child's controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com