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也可以满足简单需求
Jun 27 Javascript
javascript利用apply和arguments复用方法
Nov 25 Javascript
jquery实现简单的无缝滚动
Apr 15 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
react路由配置方式详解
Aug 07 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 Javascript
vue 将页面公用的头部组件化的方法
Dec 18 Javascript
利用d3.js实现蜂巢图表带动画效果
Sep 03 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
Sep 17 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
js实现弹窗效果
Aug 09 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
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
smarty实现多级分类的方法
2014/12/05 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
2015/12/10 PHP
php批量删除操作代码分享
2017/02/26 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
javascript 屏蔽鼠标键盘的几段代码
2008/01/02 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
jQuery实现选项卡功能(两种方法)
2017/03/08 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue-cli脚手架-bulid下的配置文件
2018/03/27 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
[01:44]剑指西雅图 展望TI之CIS战队专访
2014/06/25 DOTA
python实现颜色rgb和hex相互转换的函数
2015/03/19 Python
Python中特殊函数集锦
2015/07/27 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
python采集微信公众号文章
2018/12/20 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
Python  Django 母版和继承解析
2019/08/09 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
CSS3实现鼠标悬停显示扩展内容
2016/08/24 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
super()与this()的区别
2016/01/17 面试题
Servlet方面面试题
2016/09/28 面试题
社会实践活动总结
2015/02/05 职场文书
生产现场禁烟通知
2015/04/23 职场文书
催款函范本大全
2015/06/24 职场文书