Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:将变量引用指定给对象属性_Javascript_Angularjs - Fatal编程技术网

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
对象的属性。这是可行的,但我无法想象将此模式用于生产应用程序。。。我用一个解决方案更新了我的问题