AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法
在AngularJS中,有時候需要監(jiān)視Scope中的某個變量,因?yàn)樽兞康母淖儠绊懸恍┙缑嬖氐娘@示。有時,也希望通過jQuery調(diào)用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的按鈕禁用
● 點(diǎn)擊id為jQBtn的按鈕調(diào)用Scope中的某個方法讓Scope中的變量counter自增1
我們可能會這樣寫:
$('#jQBtn').on("click", function(){
console.log("JQuery button clicked");
//需要考慮的問題是:
//這里如何調(diào)用Scope中的某個方法,使Scope的的變量counter自增1
})
...
myApp.controller("NGCtrl", function($scope){
$scope.counter = 0;
//這里,怎么讓jQBtnState變量值發(fā)生變化告之外界呢?
$scope.jQBtnState = false;
$scope.jQBtnClick = function(){
$scope.counter++;
}
})
其實(shí),使用$watch方法可以監(jiān)視Scope某個變量的變化,當(dāng)變化發(fā)生調(diào)用回調(diào)函數(shù)。
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++;
}
})
以上,當(dāng)jQBtnState變量值為false的時候就會禁用id為jQBtn的按鈕。
外界如何調(diào)用Scope的方法呢?
--先獲取Scope,然后使用$apply方法調(diào)用Scope內(nèi)的方法。
$('#jQBtn').on("click", function(){
console.log("JQuery button clicked");
var scope = angular.element(ngSection).scope();
scope.$apply(function(){
scope.jQBtnClick();
});
})
以上,通過獲取Scope,使用$apply方法調(diào)用Scope內(nèi)的jQBtnClick方法使Scope呢的變量counter自增1。
以上所述是針對AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法 的相關(guān)知識,希望對大家有所幫助。
相關(guān)文章
AngularJs學(xué)習(xí)第五篇從Controller控制器談?wù)?scope作用域
這篇文章主要介紹了AngularJs(五)從Controller控制器談?wù)?scope作用域 的相關(guān)資料,需要的朋友可以參考下2016-06-06
angular 基于ng-messages的表單驗(yàn)證實(shí)例
本篇文章主要介紹了angular 基于ng-messages的表單驗(yàn)證實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05
angularjs 獲取默認(rèn)選中的單選按鈕的value方法
下面小編就為大家分享一篇angularjs 獲取默認(rèn)選中的單選按鈕的value方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Angular Universal服務(wù)器端渲染避免 window is not&
這篇文章主要介紹了Angular Universal服務(wù)器端渲染避免 window is not defined錯誤消息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
AngularJS入門教程之與服務(wù)器(Ajax)交互操作示例【附完整demo源碼下載】
這篇文章主要介紹了AngularJS與服務(wù)器Ajax交互操作的方法,可實(shí)現(xiàn)post傳輸數(shù)據(jù)的功能,并附帶完整的demo源碼供讀者下載參考,源碼中還包含了前面章節(jié)的示例文件,需要的朋友可以參考下2016-11-11
詳解Angular.js數(shù)據(jù)綁定時自動轉(zhuǎn)義html標(biāo)簽及內(nèi)容
本篇文章主要介紹了詳解Angular.js數(shù)據(jù)綁定時自動轉(zhuǎn)義html標(biāo)簽及內(nèi)容 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03
AngularJs Using $location詳解及示例代碼
本文主要介紹AngularJs Using $location的知識資料,這里整理了相關(guān)的資料,及簡單示例代碼,有興趣的小伙伴可以參考下2016-09-09
對angularjs框架下controller間的傳值方法詳解
今天小編就為大家分享一篇對angularjs框架下controller間的傳值方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10

