AngularJS $范围不看的景观变化 [英] AngularJS $scope not watching changes from View

查看:169
本文介绍了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>)

 <!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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆