基本范围连接

Basic Scope Connection

我几天前才开始 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 无关,它只是将 HTML 中的两件事联系在一起。我不明白,如果范围立即更新,为什么这不起作用?

scopes are immediately updated whenever the value of their linked element changes

是,但仅使用 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;
    }

试试看:

如果你想在改变其他范围变量时改变范围变量,你需要使用 $watch

</p> <pre><code>myMod.controller('lyricsMod', function ($scope) { $scope.$watch('valueB',function(){ $scope.valueA=$scope.valueB; }); $scope.valueA=$scope.valueB; });