gpt4 book ai didi

javascript - 为什么跨 Controller 共享数据在 AngularJS 中不起作用

转载 作者:行者123 更新时间:2023-11-30 13:00:56 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的用户名登录系统。这只是为了记录我可以在各种 Controller 中使用的用户名。

但是,出于某种原因,我无法在 abcController 中获取 $scope.userName

这个问题的本质是跨 Controller 共享数据。

controller.js

app.controller('userNameController',function ($scope, $log, Config, Session)
{
Session.updateSession($scope.userName);
});

app.controller('abcController',function ($scope, $log, Config, Session)
{
$scope.userName=Session.data.username;
//some other code
});

resource.js

app.factory('Session', function() {
var Session = {
data: {},
updateSession: function(userName) {
Session.data = { "username": userName }
}
};
return Session;
});

一旦用户点击登录按钮,就会出现一个推特 Bootstrap 模式(弹出窗口)并要求用户输入他们的用户名。

index.html

<div ng-controller="userNameController">
<button class="btn" id="enterUsernameBtn" href="#userNameModal" role="button" class="btn" data-toggle="modal" title="Enter Username">Login</button>
</div>

<!-- UserName Modal -->
<div id="userNameModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="userNameModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="userNameModalLabel">Enter your username</h3>
</div>
<div class="modal-body">
<p><b>UserId</b></p>
<div class="input-append">
<input class="pull-left" id="userIdTextBox" type="text" style="left:8px; width:160px" ng-controller="userNameController" ng-model="userName">
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal" aria-hidden="true">Submit</button>
</div>
</div>

请随意提出建议,如果有更好的方法来做我上面想做的事情。

最佳答案

如果您这样定义您的资源会有帮助吗?

app.factory('Session', function() {
var Session = {
data: { username: undefined }, // ensure object ref to attach to
updateSession: function(userName) {
Session.data.username = userName; // do NOT recreate the object above
}
};
return Session;
});

我想可能发生了什么(我看不到你所有的代码)但我不认为当你在 abcController 中引用时设置 username >。通过首先在 abcController 可以附加到的对象模式中定义共享引用,它会在稍后调用 updateSession() 时反射(reflect)更改。

这是一个有效的 example使用您的服务理念。

关于javascript - 为什么跨 Controller 共享数据在 AngularJS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17429107/

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