为什么模型更改时$watch不更新
Why is $watch not updating when the model changes
为什么手表每次更换模型时都不会记录?
为什么输入不是以值测试开头?
(function () {
'use strict';
// Create the application.
var app = angular.module('tabApplication', []);
// Creat the tabs controller.
app.controller('tabController', ['$log', '$scope', function ($log, $scope) {
$scope.myName = 'test';
$log.log($scope.myName);
$scope.$watch('myName', function(newValue, oldValue) {
$log.log(newValue, oldValue);
});
}]);
}());
<!DOCTYPE html>
<html lang="en-US">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<body>
<div ng-app="tabApplication" ng-controller="tabController as tabC">
<p>Name : <input type="text" ng-model="tabC.myName"></p>
<h1>Hello {{tabC.myName}}</h1>
</div>
</body>
</html>
您是否尝试过观看字符串'tabC.myName'
而不是仅仅观看'myName'
:
$scope.$watch('tabC.myName', function(newValue, oldValue) {
$log.log(newValue, oldValue);
});
ng-model="tabC.myName"
不绑定到$scope.myName
变量,这就是为什么输入在开始时显示为空而不是"test"的原因。
请尝试ng-model="myName"
而不是;)
正如 cl3m 答案所指出的那样,因为您使用控制器作为语法,您必须注意"tabC.myName">
另一种方法是使用this
来设置变量,并导入$scope
以使用$watch
功能
(function () {
'use strict';
// Create the application.
var app = angular.module('tabApplication', []);
// Creat the tabs controller.
app.controller('tabController', ['$log', '$scope', function ($log, $scope) {
this.myName = 'test';
$log.log(this.myName);
$scope.$watch('tabC.myName', function(newValue, oldValue) {
$log.log(newValue, oldValue);
});
}]);
}());
相关文章:
- 在控制器上使用“$watch”时,为什么不更新此隐藏字段
- AngularJS ng src不会在$rootScope上使用$watch进行更新
- 使用$watch更新数据,ng重复不反映更改
- 当数据在另一个URL上更新时,AngularJS是否可以在一个URL上触发$watch
- Angular$watch未更新绑定
- 事件发射器与在 AngularJs 中更新大型数据集时的$watch
- AngularJS:$scope.$watch 不会更新从自定义指令$resource获取的值
- 为什么模型更改时$watch不更新
- AngularJS暂停$watch以进行内部更新
- $watch无法识别更新的属性
- 在 $scope.$watch 中更新时,独立作用域绑定不起作用
- 只更新已使用Webpack.watch()更改的区块
- 在指令中使用$watch的单个值对范围进行角度更新
- angularJS$watch在使用控制器更新数据时不在指令中工作
- $watch未在函数外更新数组
- Angular $watch数组并从服务器更新
- Gulp.watch()不能用于FTP更新
- $watch()没有更新$scope
- 美元的范围.当从指令中添加值时,数组上的$watch不会更新
- $watch仅在window.innerWidth的第一次更新时触发