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国旗变换效果代码
Aug 13 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
JS实现定时自动关闭DIV层提示框的方法
May 11 Javascript
学习JavaScript事件流和事件处理程序
Jan 25 Javascript
jquery html动态添加的元素绑定事件详解
May 24 Javascript
轻松5句话解决JavaScript的作用域
Jul 15 Javascript
Vue.js实现无限加载与分页功能开发
Nov 03 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 jQuery
AngularJS双向绑定和依赖反转实例详解
Apr 15 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
Apr 21 Javascript
微信小程序swiper左右扩展各显示一半代码实例
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_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
javascript 动态加载 css 方法总结
2009/07/11 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
jQuery实现仿淘宝带有指示条的图片转动切换效果完整实例
2015/03/04 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
Layui tree 下拉菜单树的实例代码
2019/09/21 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
编写Python小程序来统计测试脚本的关键字
2016/03/12 Python
Python中pillow知识点学习
2018/04/30 Python
Python提取频域特征知识点浅析
2019/03/04 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
2020/10/28 Python
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
校园之声广播稿
2014/01/31 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
夫妻婚内购房协议书
2014/10/05 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
电力安全学习心得体会
2016/01/18 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
vue中data里面的数据相互使用方式
2022/06/05 Vue.js