Javascript AngularJS:将变量引用指定给对象属性
正如您在下面的代码片段中所看到的,Javascript AngularJS:将变量引用指定给对象属性,javascript,angularjs,Javascript,Angularjs,正如您在下面的代码片段中所看到的,$scope.foo是在$scope.bar对象的foo属性上分配的。这些仅在初始化时同步。 我想在我的$scope.bar对象中引用$scope.foo,以保持它们的同步 注: 这个问题在AngularJS上下文中。 这是一个微不足道的问题,应该在JS框架中解决 Plunker中的工作解决方案: 出现问题的代码段: angular.module('app',[]) .controller('Ctrl',['$scope',函数($scope){ $scope
$scope.foo
是在$scope.bar
对象的foo
属性上分配的。这些仅在初始化时同步。
我想在我的$scope.bar
对象中引用$scope.foo
,以保持它们的同步
注:这个问题在AngularJS上下文中。
这是一个微不足道的问题,应该在JS框架中解决 Plunker中的工作解决方案: 出现问题的代码段:
angular.module('app',[])
.controller('Ctrl',['$scope',函数($scope){
$scope.foo=“eeee”;
$scope.bar={
foo:$scope.foo
};
$scope.do=函数(){
警报($scope.foo);
};
}]);代码>
傅:
{{foo}}
酒吧:
{{bar}}
做
字符串在javascript中是不可变的,因此当您执行foo:$scope.foo
时,您将字符串的值分配给对象的属性,而不是对$scope.foo
的引用
保持它们同步的最佳方法是将字符串值包装到对象中,并使用这些值来保持相互引用
angular.module('app',[])
.controller('Ctrl',['$scope',函数($scope){
$scope.bar={
foo:{value:“eeee”}
};
$scope.foo=$scope.bar.foo;
$scope.do=函数(){
警报($scope.foo.value);
};
}]);代码>
傅:
{{foo.value}}
酒吧:
{{bar}}
做
在Javascript中,当您在执行期间定义数组时,变量将在执行时解析:
$scope.foo = 5;
$scope.bar = {
foo : $scope.foo
};
如果现在执行$scope.foo=7
,$scope.bar.foo
仍将是5
要访问新值,您可以直接访问$scope.foo。如果出于某种原因必须使它们保持同步,可以使用角度表:
$scope.$watch('foo', function(newVal) { $scope.bar.foo = newVal; });
请注意,此类监视将仅在下一个摘要周期中应用(而不是在更新$scope.foo
时立即应用)。另外,绑定只是一个方向。我理解每次更改不可变对象引用时都会出现不可变对象引用,但在纯JS环境中我没有问这个问题foo
和bar
是由框架处理的$scope
对象的属性。这是可行的,但我无法想象将此模式用于生产应用程序。。。我用一个解决方案更新了我的问题,我知道每次不可变对象发生变化时都会有引用,但我并没有在纯JS环境中问这个问题foo
和bar
是由框架处理的$scope
对象的属性。这是可行的,但我无法想象将此模式用于生产应用程序。。。我用一个解决方案更新了我的问题