I have an angular application that runs fine on the web and in ripple but the following error on my android device and in the android emulator:
Uncaught TypeError: Cannot call method 'triggerBeforeShow' of undefined
The application has a stub default view that redirects to the main home view.
A sample cordova project to reproduce the error is included. Run from VS Empulator 5" KitKat or from an android device.
<!DOCTYPE html>
<
html
>
<
head
>
<
meta
charset
=
"utf-8"
/>
<!--
Customize the content security policy in the meta tag below as needed. Add 'unsafe-inline' to default-src to enable inline JavaScript.
For details, see http://go.microsoft.com/fwlink/?LinkID=617521
-->
<
meta
http-equiv
=
"Content-Security-Policy"
content
=
"default-src 'self' http://cdn.kendostatic.com ; http://ajax.googleapis.com http://code.jquery.com ; https://caredarewebapi.azurewebsites.net ; https://localhost:44309/ https://localhost:44300/ https://caredarestorage.blob.core.windows.net/ 'unsafe-eval' 'unsafe-inline' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"
>
<
title
>CorovaStartupNavigationTest</
title
>
<!-- CorovaStartupNavigationTest references -->
<
link
href
=
"css/kendo.mobile.all.min.css"
rel
=
"stylesheet"
/>
<
script
src
=
"scripts/index.js"
></
script
>
</
head
>
<
body
kendo-mobile-application
skin
=
"'flat'"
ng-app
=
"sushiMobileApp"
>
<
kendo-mobile-view
id
=
"viewLogin"
data-title
=
"Login"
ng-controller
=
"indexController"
k-on-before-show
=
"showHome(kendoEvent)"
>
</
kendo-mobile-view
>
<
script
src
=
"cordova.js"
></
script
>
<
script
src
=
"scripts/platformOverrides.js"
></
script
>
<
script
src
=
"scripts/jquery.min.js"
></
script
>
<
script
src
=
"scripts/angular.js"
></
script
>
<
script
src
=
"scripts/kendo.all.min.js"
></
script
>
<
script
src
=
"app/modules/cdlogin.js"
></
script
>
<
script
>
angular.module('sushiMobileApp', ['kendo.directives', 'cdlogin'])
.controller('indexController', ['$scope', function ($scope) {
$scope.showHome = function (kendoEvent) {
kendo.mobile.application.navigate("/app/views/viewtabhome.html");
}
$scope.onCommand = function (kendoEvent) {
$scope.command = kendoEvent.currentTarget.data("command");
switch ($scope.command) {
case "login":
kendo.mobile.application.navigate('/app/views/viewlogin.html');
break;
}
}
}]);
;
</
script
>
</
body
>
</
html
>