gpt4 book ai didi

javascript - Angular : assign variable reference to Object property

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:53 25 4
gpt4 key购买 nike

正如您在下面的代码片段中看到的,$scope.foo 被分配给 $scope.barfoo 属性目的。这些仅在初始化时同步。我想在我的 $scope.bar 对象中引用 $scope.foo 以保持它们同步。

注:
这个问题是在 AngularJS 上下文中。
这是一个微不足道的问题,应该在 JS 框架中解决。

Plunker 中的工作解决方案:here

问题片段:

angular.module('app', [])

.controller('Ctrl', ['$scope', function($scope) {

$scope.foo = "eeee";
$scope.bar = {
foo : $scope.foo
};

$scope.do = function() {
alert($scope.foo);
};

}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app">
<div ng-controller="Ctrl">

foo :
<input type="text" ng-model="foo"> {{foo}} <br />

bar :
<input type="text" ng-model="bar.foo"> {{bar}} <br />


<button type="button" ng-click="do()"> DO </button>


</div>
</body>

最佳答案

字符串在 javascript 中是不可变的,所以当您执行 foo : $scope.foo 时,您是将字符串的值分配给对象的属性,而不是对 $ 的引用作用域.foo.

保持它们同步的最佳方法是将字符串值包装在对象中并使用它们来保持相互引用。

angular.module('app', [])

.controller('Ctrl', ['$scope', function($scope) {

$scope.bar = {
foo : {value: "eeee"}
};
$scope.foo = $scope.bar.foo;

$scope.do = function() {
alert($scope.foo.value);
};

}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<body ng-app="app">
<div ng-controller="Ctrl">

foo :
<input type="text" ng-model="foo.value"> {{foo.value}}<br />

bar :
<input type="text" ng-model="bar.foo.value"> {{bar}} <br />


<button type="button" ng-click="do()"> DO </button>


</div>
</body>

关于javascript - Angular : assign variable reference to Object property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40045125/

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