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获取网页中的js、css、Flash等文件
Dec 20 Javascript
js 实现浏览历史记录示例
Apr 20 Javascript
JavaScript中的console.profile()函数详细介绍
Dec 29 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
关于js函数解释(包括内嵌,对象等)
Nov 20 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
JavaScript实现前端实时搜索功能
Mar 26 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
Node.Js中实现端口重用原理详解
May 03 Javascript
解决$store.getters调用不执行的问题
Nov 08 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 获取页面中指定内容的实现类
2014/01/23 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
扩展jQuery 键盘事件的几个基本方法
2009/10/30 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
js实现抽奖功能
2020/11/24 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
Python爬虫爬验证码实现功能详解
2016/04/14 Python
python字符串的常用操作方法小结
2016/05/21 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
快速了解Python中的装饰器
2018/01/11 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
对python字典过滤条件的实例详解
2019/01/22 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
培训主管岗位职责
2014/02/01 职场文书
基层党员四风问题自我剖析材料
2014/09/29 职场文书
公司借条范本
2015/05/25 职场文书
房产电话营销开场白
2015/05/29 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
Python基础详解之邮件处理
2021/04/28 Python
详解JVM系列之内存模型
2021/06/10 Javascript
R9700摩机记
2022/04/05 无线电