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 HTML中的table
Apr 15 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
Jul 14 Javascript
利用jQuery实现可输入搜索文字的下拉框
Oct 23 Javascript
使用JS画图之点、线、面
Jan 12 Javascript
jQuery获取URL请求参数的方法
Jul 18 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
微信小程序 LOL 英雄介绍开发实例
Sep 30 Javascript
JS动态显示倒计时效果
Dec 12 Javascript
微信小程序订阅消息(java后端实现)开发
Jun 01 Javascript
JavaScript实现与web通信的方法详解
Aug 07 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 Javascript
js实现纯前端压缩图片
Nov 16 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
基于xcache的配置与使用详解
2013/06/18 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
javascript模拟枚举的简单实例
2014/03/06 Javascript
jquery实现用户信息修改验证输入方法汇总
2015/07/18 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python-基础-入门 简介
2014/08/09 Python
Python制作词云的方法
2018/01/03 Python
windows下python和pip安装教程
2018/05/25 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
机电专业个人自荐信格式模板
2013/09/23 职场文书
财务人员的自我评价范文
2014/03/03 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
奥运会口号
2014/06/13 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
作风建设年度心得体会
2014/10/29 职场文书
师范生见习报告范文
2014/11/03 职场文书
课题研究阶段性总结
2015/08/13 职场文书
《攀登者》:“海拔8000米以上,你不能指望任何人”
2019/11/25 职场文书
高并发下Redis如何保持数据一致性(避免读后写)
2022/03/18 Redis
ubuntu下常用apt命令介绍
2022/06/05 Servers