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 相关文章推荐
正负小数点后两位浮点数实现原理及代码
Sep 06 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 Javascript
js实现div拖动动画运行轨迹效果代码分享
Aug 27 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
WEB开发之注册页面验证码倒计时代码的实现
Dec 15 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
Jan 09 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
Vue打包后出现一些map文件的解决方法
Feb 13 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
微信小程序实现的图片保存功能示例
Apr 24 Javascript
使用 UniApp 实现小程序的微信登录功能
Jun 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中养成7个面向对象的好习惯
2010/07/17 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jCallout 轻松实现气泡提示功能
2013/09/22 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
vue 中固定导航栏的实例代码
2019/11/01 Javascript
js实现内置计时器
2019/12/16 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
python中字符串内置函数的用法总结
2018/09/13 Python
python-tornado的接口用swagger进行包装的实例
2019/08/29 Python
Python文件路径名的操作方法
2019/10/30 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
TensorFlow实现checkpoint文件转换为pb文件
2020/02/10 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
canvas绘制表情包的示例代码
2018/07/09 HTML / CSS
美国保健品专家:Life Extension
2018/05/04 全球购物
美国性感内衣店:Yandy
2018/06/12 全球购物
后勤人员自我鉴定
2013/10/20 职场文书
幼儿园秋游活动方案
2014/01/21 职场文书
石油大学毕业生自荐信
2014/01/28 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
讲文明倡议书
2015/04/29 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
python编程项目中线上问题排查与解决
2021/11/01 Python
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL