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 相关文章推荐
jquery load事件(callback/data)使用方法及注意事项
Feb 06 Javascript
js数组的操作详解
Mar 27 Javascript
javascript使用call调用微信API
Dec 15 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
js 颜色选择插件
Jan 23 Javascript
ES6学习教程之对象的扩展详解
May 02 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
vue实现文章内容过长点击阅读全文功能的实例
Dec 28 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
JavaScript实现省市联动效果
Nov 22 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 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
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
一个PHP数组应该有多大的分析
2009/07/30 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
JS继承--原型链继承和类式继承
2013/04/08 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
matplotlib 纵坐标轴显示数据值的实例
2018/05/25 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python循环输出三角形图案的例子
2019/11/22 Python
python getopt模块使用实例解析
2019/12/18 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
HEMA法国:荷兰原创设计
2019/02/21 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
药店采购员岗位职责
2014/09/30 职场文书
学校食堂标语
2014/10/06 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
Linux安装Docker详细教程
2022/07/07 Servers