Я пытаюсь использовать firebase 3 с моим ионическим приложением. (Я просто заставлял общаться, поэтому я считаю, что я мог бы сделать все правильно с самого начала, например, используя нотацию ControllerAs)controllerAs метод не вызывается, когда другие
все в контроллере отлично работает. просто метод logUserOut
не срабатывает - вообще! Я в недоумении.
контроллер:
.controller('DashCtrl', function($scope, $ionicModal, DataService, AuthService) {
var ctrl = this;
ctrl.icons = [];
//// SERVICE GETS
ctrl.allIcons = DataService.icons();
ctrl.pages = DataService.pages();
////
//// FILTER INFORMATION
ctrl.loadIcons = function() {
console.log(ctrl.pages)
for (icon in ctrl.allIcons) {
var i = ctrl.allIcons[icon];
// console.log(i)
if(i.active){
ctrl.icons.push(i);
}
}
};
////
//// ACTIONS
ctrl.logUserOut = function(){
console.log('this is not being called')
// AuthService.logout();
};
////
});
HTML:
<ion-modal-view>
<ion-pane >
<ion-content scroll="false" >
<section class = "modal-container">
<div class="item modal-header">
<button class="button button-left button-icon light ion-android-close" ng-click="ctrl.closeProfileModal()"></button>
<div class="light text-center">
<button class="button button-clear" ng-click="controller.closeProfileModal()">
<img class="avatar-modal" src="img/mike.png">
</button>
</div>
</div>
<div class = "row modal-profile-row">
<div class = "col">
<button class="button button-clear">
<span class="title light">Personal Info</span>
</button>
</div>
</div>
<div class = "row modal-profile-row">
<div class = "col">
<button class="button button-clear" ng-click="ctrl.logUserOut()">
<span class="title light">Sign Out</span>
</button>
</div>
</div>
</section>
</ion-content>
</ion-pane>
</ion-modal-view>
app.js:
.state('tab.dash', {
url: '/dash',
views: {
'tab-dash': {
templateUrl: 'templates/tab-dash.html',
controller: 'DashCtrl',
controllerAs: 'ctrl'
}
}
})
EDIT: Оказывается, проблема была с Sublime Text: для по какой-то причине, было aw eird cache issue - я редактировал файл, но изменения не были распознаны. Я рад, что я спросил, потому что теперь я использую `controllerAs: 'в $ stateProvider, а не' controller: someController как-то". Спасибо за вашу помощь!
Где ваш метод 'closeProfileModal'? – Weedoze
ControllerAs - хороший первый шаг. Следующий шаг - иметь DashCtrl как Компонент вместо Контролера: https://docs.angularjs.org/guide/component. Тогда $ ctrl.logUserOut() будет работать нормально. –
@Weedoze Я оставил его, потому что он работает. – rcpilotp51