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实现的日期操作类DateTime函数代码
Mar 16 Javascript
JS 两个字符串时间的天数差计算
Aug 25 Javascript
jQuery过滤选择器:not()方法使用介绍
Apr 20 Javascript
JavaScript基于setTimeout实现计数的方法
May 08 Javascript
js自定义select下拉框美化特效
May 12 Javascript
收集前端面试题之url、href、src
Mar 22 Javascript
Vue实现简单分页器
Dec 29 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
antd配置config-overrides.js文件的操作
Oct 31 Javascript
使用Ajax实现进度条的绘制
Apr 07 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
php多个文件及图片上传实例详解
2014/11/10 PHP
php中的登陆login实例代码
2016/06/20 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
JS常见算法详解
2017/02/28 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
vuex入门最详细整理
2020/03/04 Javascript
Python中的闭包详细介绍和实例
2014/11/21 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python循环结构的应用场景详解
2019/07/11 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
2013/08/02 HTML / CSS
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
中医药大学毕业生自荐信
2013/11/08 职场文书
自主招生自荐信范文
2013/12/04 职场文书
公司面试感谢信
2014/02/01 职场文书
法语专业求职信
2014/07/20 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
刑事起诉书范文
2015/05/19 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书
python面向对象版学生信息管理系统
2021/06/24 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis
Django框架中视图的用法
2022/06/10 Python