我有一個應用程序,可以在所有控制器註冊後手動引導。然後我希望看到當用戶登錄時,他們的帳戶已被驗證。不幸的是,我的範圍監聽器無法正常工作,無法捕捉到我的登錄控制器發出的廣播。我的帳戶驗證的代碼波紋管:
class CMSAccountCtrl
constructor: (@$scope, @$rootScope, @$location, @$http, @APGlobalState) ->
console.log @$scope
@$scope.$on 'CMSAccountCtrl-verify', (event, value) =>
console.log 'cms account ctrl should have verified'
@verify()
@$scope.verify =() =>
@verify()
verify:() =>
@$http({
'method': 'POST'
'url': "#{window.ap_base_uri}/caas/account/verify"
'data': {
'apCookie': @APGlobalState.get 'cookie'
}
}).success((data, status, headers, config) =>
# Do something
console.log(data)
if data.isVerified == 'yes'
@$rootScope.$broadcast 'CMSLoginCtrl-showToolbar'
else
@$scope.alert = {
msg: "You're account as not been verified. Please re-check your email."
}
).error((data, status, headers, config) =>
# Do somethings
)
if !window.apInject?
window.apInject = {}
if !window.CMSControllers?
window.CMSControllers = {}
# This executes before bootstrap, but after angular.module 'myModule', []
window.apInject.CMSAccountCtrl = (app) ->
app.controller 'CMSAccountCtrl', [
'$scope'
'$rootScope'
'$location'
'$http'
'APGlobalState'
CMSAccountCtrl
]
window.CMSControllers.CMSAccountCtrl = CMSAccountCtrl
奇怪的是,我的@ $ $範圍上「監聽器」適用於一些我的控制器,但無法爲他人,即使他們都實現了相同的結構。爲什麼我的聽衆不註冊?
你已經改變了$ broadcast和$ emit的作用。廣播下降,發射。 – Chandermani
感謝@Chandermani指出。 – V31