且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

类型错误:无法读取的未定义的属性'通知'

更新时间:2022-10-29 17:13:57


  

您遇到这个错误,因为$ ionicPlatform是不是在你的应用程序的全局范围内。


块引用>

好像你正试图在其上运行的第一个实例的应用程序加载的东西。那么,为什么不去做呢角的方式?/

  angular.module(启动器,['离子'])。
    运行(函数($ rootScope,$位置$ ionicPlatform,$州){
        $ ionicPlatform.ready(函数(){
            $ cordovaLocalNotification.add({
                编号:'1',
                消息:推!
            })
        },FALSE);
    });


  

从文档:


  
  

运行块是角度的主要方法最接近。一个运行块是code这需要运行的kickstart应用程序。所有的服务都设定好后,执行和注射器已创建。


块引用>

Trying to implement local notification with the following error as a result:

TypeError: Cannot read property 'notification' of undefined

Code in question is,

function(){ 
    $ionicPlatform.ready(function() {
        $cordovaLocalNotification.add({
            id: '1',
            message: "Push!!"
        })
    }, false);  
    return true
    }

I made the app from ionic tabs example. Controller in which this call is happening looks like

Updated

angular.module('starter.controllers', ['ionic','ngCordova']) .controller('FriendsCtrl', function($scope, $ionicPlatform, $cordovaLocalNotification,Friends) {

index.html looks like

<!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>

<!-- cordova script (this will be a 404 during development) -->
<script src="lib/ngCordova/dist/ng-cordova.js"></script>

<!-- your app's js -->
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
<script src="js/filters.js"></script>
<script src="cordova.js"></script>

UPDATE $ionicPlatform is not defined has been fixed, real issue lies in TypeError: Cannot read property 'notification' of undefined

You're facing this error because, $ionicPlatform is not available in the global scope of your application.

Seems like you're trying to run something on the very first instance the application loads. Well, why not do it the angular way ?/

    angular.module("starter", ['ionic']).
    run(function($rootScope, $location, $ionicPlatform, $state) {
        $ionicPlatform.ready(function() {
            $cordovaLocalNotification.add({
                id: '1',
                message: "Push!!"
            })
        }, false);  
    });

From the Docs :

Run blocks are the closest thing in Angular to the main method. A run block is the code which needs to run to kickstart the application. It is executed after all of the service have been configured and the injector has been created.