我想将$ scope.variable绑定到另一个$ scope.variable,如下所示:
changeit
换句话说,每当$ scope.b得到一个值时,我想将$ scope.b值赋给$ scope.a。
答案 0 :(得分:6)
在JavaScript中,您可以复制对obj的引用,它会为您提供所期望的内容。
你需要这样做:
$scope.b = {prop: 0};
$scope.a = $scope.b;
$scope.b.prop = 10;
console.log($scope.a.prop);// It gives 10
答案 1 :(得分:2)
你必须做手表:
$scope.$watch('b', function (newValue) {
$scope.a = newValue;
});
$scope.b = 2;
Console.log($scope.a); // Careful! This will still be undefined, explanation below.
Angular有一个摘要循环,它执行它来处理绑定。如果你想要你可以做一个$scope.$apply()
指示角度运行循环,或者你可以让它做它的事情,这可能是你想要的真实代码。
答案 2 :(得分:2)
$scope.tmp = {
'b' : 22,
'a' : 33
};
$scope.$watch('tmp', function() {
$scope.tmp.a = $scope.tmp.b; // Set $scope.a here
}, true);
答案 3 :(得分:1)
您可以使用Object.defineProperty()
根据另一个属性定义一个属性:
function myController($scope) {
Object.defineProperty($scope, 'b', {
get: function() {
return $scope.a;
},
set: function(value) {
$scope.a = value;
}
});
$scope.b = 10;
console.log($scope.a);
$scope.a = 20;
console.log($scope.b);
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="myController">
<input type="text" ng-model="a" />
<input type="text" ng-model="b" />
</div>
</div>
答案 4 :(得分:0)
在javascript中,您可以复制对象引用,因为您正在执行的操作是将b
的值复制到a
,即使您要复制引用也是如此。因为$scope.b
是原始类型数据。如果要复制其引用,则它应该是非基本类型。
如,
$scope.b = {c:''};
$scope.a = $scope.b;
$scope.a.c = 10;
console.log($scope.b.c); //output 10