AngularJS $范围不看的景观变化 [英] AngularJS $scope not watching changes from View
本文介绍了AngularJS $范围不看的景观变化的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有,我希望看到登录浏览器的控制台消息表明$范围观察家工作好这个小样本,但它不幸的是情况并非如此。
<!DOCTYPE HTML>
< HTML NG-应用=演示>< HEAD>
&所述; SCRIPT SRC =bower_components /角度/ angular.js>&下; /脚本>
<脚本>
VAR应用= angular.module('示范',['NG']);
app.controller('demoCtrl',函数($范围){
VAR自我=这一点; self.searchText ='';
$范围。$腕表('self.searchText',函数(N,P){
的console.log('SEARCHTEXT从改变',N'到',P);
}); });
< / SCRIPT>
< /头><机身NG控制器=demoCtrl作为CTRL>
<输入类型=文本NG模型=ctrl.searchText/>
< /身体GT;< / HTML>
解决方案
您需要使用别名 CTRL
(不是自$ C在
$ $范围腕表(...)$ C>)
:
<!DOCTYPE HTML>
< HTML NG-应用=演示>< HEAD>
&所述; SCRIPT SRC =bower_components /角度/ angular.js>&下; /脚本>
<脚本>
VAR应用= angular.module('示范',['NG']);
app.controller('demoCtrl',函数($范围){
VAR自我=这一点; self.searchText ='';
$范围。$腕表('ctrl.searchText',函数(N,P){
的console.log('SEARCHTEXT从改变',N'到',P);
}); });
< / SCRIPT>
< /头><机身NG控制器=demoCtrl作为CTRL>
<输入类型=文本NG模型=ctrl.searchText/>
< /身体GT;< / HTML>
在 NG-控制器=demoCtrl作为CTRL
时,角创建一个链接到控制器上下文对象这个
进入范围: $ scope.ctrl
I have this small sample in which I hoped to see log messages in browser console indicating $scope watcher is working well, but it's unfortunately not the case.
<!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>
解决方案
You need to use the alias ctrl
(not self
) in $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>
When ng-controller="demoCtrl as ctrl"
is used, Angular creates a link to the controller context object this
into the scope: $scope.ctrl
.
这篇关于AngularJS $范围不看的景观变化的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文