我有一个文本框,其值绑定到控制器中的$scope.stringOne
。然后,我有第二个变量$scope.stringTwo
,它是stringOne
和更多文本的串联。
但是,当我在文本框中键入内容时,stringOne
已在视图中成功更新,但stringTwo
保持不变。
要使此工作有效,还需要什么,以便在更新stringTwo
时也更新stringOne
值?
的HTML
<body ng-controller="mainCtrl">
<div class="container">
<label>Enter Text</label>
<input type="text" ng-model="stringOne"/>
<h1>{{stringOne}}</h1>
<h1>{{stringTwo}}</h1>
</div>
</body>
JS
var myApp = angular.module('myApp',[]);
myApp.controller('mainCtrl',['$scope',function ($scope,) {
$scope.stringOne = '';
$scope.stringTwo = $scope.stringOne + ' more texts';
}]);
最佳答案
使用$ watch
var myApp = angular.module('myApp',[]);
myApp.controller('mainCtrl',['$scope',function ($scope,) {
$scope.stringOne = '';
$scope.$watch('stringOne', function(new_value){
$scope.stringTwo = new_value + ' more texts';
});
}]);
官方docs
关于watch的有用帖子
为什么会这样
初始化
$scope.stringOne
时,它会收到一个空字符串,并将其添加到html ng-model
属性中时,它基本上会监视该变量的更改,但是$scope.stringTwo
您需要自己监视它