AngularJS中監(jiān)視Scope變量以及外部調(diào)用Scope方法
在AngularJS中,有時候需要監(jiān)視Scope中的某個變量,因為變量的改變會影響一些界面元素的顯示。有時,也希望通過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-06angular 基于ng-messages的表單驗證實(shí)例
本篇文章主要介紹了angular 基于ng-messages的表單驗證實(shí)例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-05-05angularjs 獲取默認(rèn)選中的單選按鈕的value方法
下面小編就為大家分享一篇angularjs 獲取默認(rèn)選中的單選按鈕的value方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02Angular Universal服務(wù)器端渲染避免 window is not&
這篇文章主要介紹了Angular Universal服務(wù)器端渲染避免 window is not defined錯誤消息,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07AngularJS入門教程之與服務(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-03AngularJs Using $location詳解及示例代碼
本文主要介紹AngularJs Using $location的知識資料,這里整理了相關(guān)的資料,及簡單示例代碼,有興趣的小伙伴可以參考下2016-09-09對angularjs框架下controller間的傳值方法詳解
今天小編就為大家分享一篇對angularjs框架下controller間的傳值方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10