Ионный толчок: приложение разрывается, когда логика нажатия находится внутри контроллера

0

СИТУАЦИЯ:

Я использую Ionic Push для моего приложения Ionic.

Я уже сделал все настройки и регистрацию, и все работает нормально. Я уже протестировал его и отправил запрос на завиток на устройстве (как ios, так и android), и я правильно получаю уведомление.

И что?

Мне нужно переместить логику push внутри контроллера. Поэтому я могу получить регистрацию и сохранить ее в таблице вместе с другими пользовательскими данными. Чтобы использовать его позже, когда это необходимо.

Но когда я перехожу от кода из.run() в app.js к контроллеру, приложение сбой..

ОШИБКА:

TypeError: Cannot read property 'init' of undefined
    at http://localhost:8100/lib/ionic-platform-web-client/dist/ionic.io.bundle.js:5844:47

КОД:

var push = new Ionic.Push({
    "debug": true
});

push.register(function(token) {  
    console.log("My Device token:",token.token);
    alert(token.token);
    push.saveToken(token);  // persist the token in the Ionic Platform 
});

ВОПРОС:

Я действительно не знаю, что я делаю неправильно.

Тот же код внутри $ionicPlatform.ready(function() {} работает отлично, но не в контроллере...

Я уже тестировал одну и ту же логику в новом приложении, и я мог бы поместить эту логику в контроллер.

У вас есть идеи, почему на этот раз я не могу?

Большое спасибо!

  • 0
    Вы сказали: «Тот же код внутри $ ionicPlatform.ready (function () {}, он работает нормально, но не в контроллере ...». Вы пытались поместить свой контроллер в контроллер с $ionicPlatform.ready ?
  • 0
    Да, я пытался внутри этого и вводит $ ionicPlatform, но я получаю ту же ошибку
Показать ещё 2 комментария
Теги:
ionic-framework
push-notification

1 ответ

0
Лучший ответ

Хорошо, я нашел решение.

Мне пришлось оставить логику push внутри метода run(). Чтение вокруг кажется, что путь.

Решение было довольно простым:

Внедрение $ rootScope внутри метода run и использование его для хранения registerId.

После этого вы можете делать все, что хотите, например, отправить запрос на отправку в api и сохранить в db.

КОД:

.run(function($ionicPlatform, $rootScope) {

  $ionicPlatform.ready(function() {

    var push = new Ionic.Push({
        "debug": true
    });

    push.register(function(token) {

        console.log("My Device token:",token.token);

        push.saveToken(token);  // persist the token in the Ionic Platform

        $rootScope.registrationId = token.token;  !! <-- 

    });

  });
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню