我有一个小示例,希望在浏览器控制台中看到表明$ scope watcher运行良好的日志消息,但不幸的是,情况并非如此。
<!doctype html>
<html ng-app="demo">
<head>
<script src="bower_components/angular/angular.js"></script>
<script>
var app = angular.module('demo', ['ng']);
app.controller('demoCtrl', function($scope) {
var self = this;
self.searchText = '';
$scope.$watch('self.searchText', function(n, p) {
console.log('searchText changed from', n, 'to', p);
});
});
</script>
</head>
<body ng-controller="demoCtrl as ctrl">
<input type="text" ng-model="ctrl.searchText" />
</body>
</html>
您需要在中使用别名ctrl
(不是self
)$scope.$watch(...)
:
<!doctype html>
<html ng-app="demo">
<head>
<script src="bower_components/angular/angular.js"></script>
<script>
var app = angular.module('demo', ['ng']);
app.controller('demoCtrl', function($scope) {
var self = this;
self.searchText = '';
$scope.$watch('ctrl.searchText', function(n, p) {
console.log('searchText changed from', n, 'to', p);
});
});
</script>
</head>
<body ng-controller="demoCtrl as ctrl">
<input type="text" ng-model="ctrl.searchText" />
</body>
</html>
当ng-controller="demoCtrl as ctrl"
使用时,角创建链接到控制器上下文对象this
入范围:$scope.ctrl
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句