JavaScript使用$ scope。$ emit和$ scope。$ on
首先,父子范圍關(guān)系確實(shí)很重要。你有兩種可能性發(fā)出某些事件:
$broadcast -將事件向下分發(fā)到所有子范圍,$emit-通過范圍層次結(jié)構(gòu)向上調(diào)度事件。我對你的控制器(作用域)關(guān)系一無所知,但是有幾種選擇:
如果scope of firstCtrl是作用域的父級,則secondCtrl你的代碼應(yīng)通過替換$emit為$broadcastin來工作firstCtrl:
function firstCtrl($scope){ $scope.$broadcast(’someEvent’, [1,2,3]);}function secondCtrl($scope){ $scope.$on(’someEvent’, function(event, mass) { console.log(mass); });}
如果你的范圍之間沒有父子關(guān)系,則可以注入$rootScope控制器并將事件廣播到所有子范圍(即secondCtrl)。
function firstCtrl($rootScope){ $rootScope.$broadcast(’someEvent’, [1,2,3]);}最后,當(dāng)你需要將事件從子控制器分派到向上作用域時,可以使用$scope.$emit。如果的范圍firstCtrl是范圍的父級secondCtrl:
function firstCtrl($scope){ $scope.$on(’someEvent’, function(event, data) { console.log(data); });}function secondCtrl($scope){ $scope.$emit(’someEvent’, [1,2,3]);}解決方法
如何$scope使用.$emit和.$on方法將對象從一個控制器發(fā)送到另一個控制器?
function firstCtrl($scope) { $scope.$emit(’someEvent’,[1,2,3]);}function secondCtrl($scope) { $scope.$on(’someEvent’,function(mass) { console.log(mass); });}
它不按我認(rèn)為的方式工作。如何做$emit和$on工作?
相關(guān)文章:
1. 就一臺服務(wù)器,mysql數(shù)據(jù)庫想實(shí)現(xiàn)自動備份,如何設(shè)計(jì)?2. mysql - thinkphp5 在MAC電腦本地正常,部署LINUX服務(wù)器之后,模型不存在3. 編輯管理員信息時,為什么沒有修改過的內(nèi)容會為空?4. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時間會消失是什么情況?5. javascript - 百度圖片切換圖片時url會改變,但無刷新,沒用hash,IE8也支持,請問是用了什么技術(shù)?6. 這是什么情況???7. node.js - win10如何安裝并使用babel?8. python - xpath中如何使用變量9. APP上傳到電腦服務(wù)器,出現(xiàn)數(shù)據(jù)上傳不完整的問題10. mysql服務(wù)無法啟動1067錯誤,誰知道正確的解決方法?
