为什么每次模型更改时手表都不会记录?
为什么输入不是以值测试开始的?
(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>
&#13;
答案 0 :(得分:4)
您是否尝试过观看字符串'tabC.myName'
,而不是正在观看'myName'
:
$scope.$watch('tabC.myName', function(newValue, oldValue) {
$log.log(newValue, oldValue);
});
答案 1 :(得分:2)
ng-model="tabC.myName"
没有绑定到$scope.myName
变量,这就是输入在开头显示为空而不是'test'的原因。
尝试ng-model="myName"
代替;)
答案 2 :(得分:1)
正如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);
});
}]);
}());