AngularJS:如何将$ scope变量绑定到另一个$ scope.variable

时间:2016-03-18 09:08:56

标签: angularjs

我想将$ scope.variable绑定到另一个$ scope.variable,如下所示:

changeit

换句话说,每当$ scope.b得到一个值时,我想将$ scope.b值赋给$ scope.a。

5 个答案:

答案 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.a更改时都会调用$ watch。如果您有多个数据,则可以创建JSON而不是单个变量

$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