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 继承机制的实现(待续)
May 18 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
javascript中万恶的function实例分析
May 25 Javascript
HTML上传控件取消选择
Mar 06 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
Dec 28 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
Nov 09 Javascript
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
Dec 15 Javascript
Vue.js中组件中的slot实例详解
Jul 17 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
Aug 03 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
Jan 03 Javascript
详解vue中的computed的this指向问题
Dec 05 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的中问验证码
2006/11/25 PHP
php异常处理使用示例
2014/02/25 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
PHP7新特性简述
2017/06/11 Javascript
对vue中methods互相调用的方法详解
2018/08/30 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
Python selenium 三种等待方式解读
2016/09/15 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
Python partial函数原理及用法解析
2019/12/11 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
Python 常用日期处理 -- calendar 与 dateutil 模块的使用
2020/09/02 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
python中time、datetime模块的使用
2020/12/14 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
5.1手机促销活动
2014/01/17 职场文书
旷课检讨书1000字
2014/02/14 职场文书
新学期教师寄语
2014/04/02 职场文书
仓库管理计划书
2014/05/04 职场文书
党支部换届选举方案
2014/05/08 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
2014年教师节活动总结
2014/08/29 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书
Elasticsearch 索引操作和增删改查
2022/04/19 Python