AngularJS中监视Scope变量以及外部调用Scope方法


Posted in Javascript onJanuary 23, 2016

在AngularJS中,有时候需要监视Scope中的某个变量,因为变量的改变会影响一些界面元素的显示。有时,也希望通过jQuery调用Scope的某个方法。

比如以下场景:

<div>
<button id="jQBtn">jQ Button</button>
</div>
<div id="ngSection" ng-controller="NGCtrl">
<input type="checkbox" ng-model="jQBtnState"/> Toggle jQ button state
<p>Counter: {{counter}}</p>
</div>

以上,我们希望:

● Scope中的jQBtnState变量值如果为false让id为jQBtn的按钮禁用
● 点击id为jQBtn的按钮调用Scope中的某个方法让Scope中的变量counter自增1

我们可能会这样写:

$('#jQBtn').on("click", function(){
console.log("JQuery button clicked");
//需要考虑的问题是:
//这里如何调用Scope中的某个方法,使Scope的的变量counter自增1
})

...

myApp.controller("NGCtrl", function($scope){
$scope.counter = 0;
//这里,怎么让jQBtnState变量值发生变化告之外界呢?
$scope.jQBtnState = false;
$scope.jQBtnClick = function(){
$scope.counter++;
}
})

其实,使用$watch方法可以监视Scope某个变量的变化,当变化发生调用回调函数。

myApp.controller("NGCtrl", function($scope){
$scope.counter = 0;
$scope.jQBtnState = false;
$scope.$watch("jQBtnState", function(newVal){
$('#jQBtn').attr('disabled', newVal);
});
$scope.jQBtnClick = function(){
$scope.counter++;
}
})

以上,当jQBtnState变量值为false的时候就会禁用id为jQBtn的按钮。

外界如何调用Scope的方法呢?

--先获取Scope,然后使用$apply方法调用Scope内的方法。
$('#jQBtn').on("click", function(){
console.log("JQuery button clicked");
var scope = angular.element(ngSection).scope();
scope.$apply(function(){
scope.jQBtnClick();
});
})

以上,通过获取Scope,使用$apply方法调用Scope内的jQBtnClick方法使Scope呢的变量counter自增1。

以上所述是针对AngularJS中监视Scope变量以及外部调用Scope方法 的相关知识,希望对大家有所帮助。

Javascript 相关文章推荐
javascript document.referrer 用法
Apr 30 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
从零学JSON之JSON数据结构
May 19 Javascript
Bootstrap布局组件应用实例讲解
Feb 17 Javascript
EasyUI中在表单提交之前进行验证
Jul 19 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
Dec 17 Javascript
js实现交通灯效果
Jan 13 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
Apr 17 Javascript
在layui中select更改后生效的方法
Sep 05 Javascript
vant 中van-list的用法说明
Nov 11 Javascript
详解ES6 扩展运算符的使用与注意事项
Nov 12 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 #Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 #Javascript
javascript实现全角转半角的方法
Jan 23 #Javascript
jQuery操作Table技巧大汇总
Jan 23 #Javascript
jquery采用oop模式class类的使用示例
Jan 22 #Javascript
jquery日历插件datepicker用法分析
Jan 22 #Javascript
js简单设置与使用cookie的方法
Jan 22 #Javascript
You might like
PHP根据IP地址获取所在城市具体实现
2013/11/27 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
CI框架Session.php源码分析
2014/11/03 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
jQuery数据缓存用法分析
2015/02/20 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
使用nodejs中httpProxy代理时候出现404异常的解决方法
2016/08/15 NodeJs
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
深入解析koa之异步回调处理
2019/06/17 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
[03:10]超级美酒第四天 fy拉比克秀 大合集
2018/06/05 DOTA
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python统计单词出现的次数
2018/04/04 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
Python PIL库图片灰化处理
2020/04/07 Python
django 数据库 get_or_create函数返回值是tuple的问题
2020/05/15 Python
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
动物学专业毕业生求职信
2013/10/11 职场文书
父亲节活动策划方案
2014/08/24 职场文书
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
java中如何截取字符串最后一位
2022/07/07 Java/Android