我几天前刚刚开始使用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无关,它只是将两个东西连接在一起。我不明白,如果范围立即更新,为什么这不起作用?
答案 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;
}