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 相关文章推荐
用js实现计算代码行数的简单方法附代码
Aug 13 Javascript
JQuery下的Live方法和$.browser方法使用代码
Jun 02 Javascript
JavaScript中的类数组对象介绍
Dec 30 Javascript
jQuery中add()方法用法实例
Jan 08 Javascript
jquery 设置style:display的方法
Jan 29 Javascript
基于JavaScript的操作系统你听说过吗?
Jan 28 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
Jun 12 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
vue 登录滑动验证实现代码
Aug 24 Javascript
angular ng-model 无法获取值的处理方法
Oct 02 Javascript
解决Vue动态加载本地图片问题
Oct 09 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 特殊字符处理函数
2008/09/05 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP实现加密的几种方式介绍
2015/02/22 PHP
php实现简单爬虫的开发
2016/03/28 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
JS将制定内容复制到剪切板示例代码
2014/02/11 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
2015/12/13 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
AngularJS自定义指令详解(有分页插件代码)
2017/06/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
seajs模块压缩问题与解决方法实例分析
2017/10/10 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
利用vscode调试编译后的js代码详解
2018/05/14 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
vue组件之间的数据传递方法详解
2019/04/19 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python连接远程ftp服务器并列出目录下文件的方法
2015/04/01 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
银行存款证明样本
2014/01/17 职场文书
简历中的自我评价怎么写呢?
2019/04/30 职场文书
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
SpringBoot整合Minio文件存储
2022/04/03 Java/Android
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫
Echarts如何重新渲染实例详解
2022/05/30 Javascript