基本范围连接

时间:2015-02-11 05:04:08

标签: angularjs scope

我几天前刚刚开始使用AngularJS,我已经读过,只要链接元素的值发生变化,范围就会立即更新。我的控制器有这个HTML代码:

<div ng-controller="lyricsMod">
<textarea ng-model="valueB"></textarea>
{{valueA}}

我的AngularJS控制器:

myMod.controller('lyricsMod', function($scope) { 
$scope.valueA = $scope.valueB;
});

然而,这没有任何结果。但是,将HTML代码更改为:

<div ng-controller="lyricsMod">
<textarea ng-model="valueA"></textarea>
{{valueA}}

产生想要的结果。很确定它与AngularJS无关,它只是将两个东西连接在一起。我不明白,如果范围立即更新,为什么这不起作用?

2 个答案:

答案 0 :(得分:3)

试一试:

如果你想在更改其他范围变量时改变范围变量

,你需要使用$ watch

myMod.controller('lyricsMod', function ($scope) {
                $scope.$watch('valueB',function(){
                    $scope.valueA=$scope.valueB;
                });
                $scope.valueA=$scope.valueB;
              });

myMod.controller('lyricsMod', function ($scope) { $scope.$watch('valueB',function(){ $scope.valueA=$scope.valueB; }); $scope.valueA=$scope.valueB; });

答案 1 :(得分:0)

  只要链接的值,

范围就会立即更新   元素变化

是,但仅使用ng-model绑定范围变量。在您的第一个示例中ValueB使用ng-model而不是valueA进行绑定。如果您想在另一个范围变量的值发生变化时更改其值(使用ng-model进行绑定)。使用ng-change指令。

<div ng-controller="lyricsMod">
        <textarea ng-model="valueB" ng-change="changeA()"></textarea>
        {{valueA}}

$scope.changeA = function () {
       $scope.valueA = $scope.valueB;
    }