gpt4 book ai didi

javascript - Angular Services and Scope - 为什么值(value)在其他范围内发生变化?

转载 作者:行者123 更新时间:2023-11-30 11:35:31 24 4
gpt4 key购买 nike

需要帮助理解下面的代码是如何工作的。

第一次加载后,div 元素和 input 元素中显示的值如预期的那样是“用户名”。

但是,考虑到两个 Controller 具有不同且互斥的范围变量,为什么当我修改输入元素中的值时第一个 div 元素中的值会被修改??。

我相信这与 rootScope 有联系,但我不确定如何将这些点联系起来。

<html ng-app='myApp'>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.js"></script>
<script type="text/javascript">
var app = angular.module('myApp', []);
app.factory('userService',['$timeout', function($timeout){
var user = {}

$timeout(function(){

user.name = 'Username';
},5000);

return user;
}])
app.controller('c1', ['$scope', 'userService', function($scope, userService){
$scope.user = userService;

}])
app.controller('c2', ['$scope', 'userService', function($scope, userService){
$scope.user = userService;
}])
</script>
<body>
<div ng-controller="c1"><h1>{{user.name}}</h1></div>
<div ng-controller="c2"><input type="text" ng-model="user.name"/></div>
</body>

</html>

最佳答案

在 angularJS 中,服务是单例的。

因为您从不更新用户的引用,所以您始终使用同一个对象。

这种由多个组件共享的服务是一种常见的数据共享方式。

关于javascript - Angular Services and Scope - 为什么值(value)在其他范围内发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44624771/

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