Search code examples
onsen-uimonaca

Onsenui can not add onsen module


I have created a new project via Monaca IDE. The page has ons.bootstrap() and onsenui version is v1.3.8 - 2015-07-27.

I try to add

<script> angular.module('app',  ['onsen'])</script>

but when I add a controller, such as app.MyController it gives me this error

Uncaught ReferenceError: app is not defined

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' https://*.googleapis.com https://*.cloudflare.com 'unsafe-inline'; script-src 'self' http://*.phonegap.com https://*.googleapis.com https://*.cloudflare.com http://*.elasticbeanstalk.com https://*.monaca.mobi:8080 'unsafe-inline' 'unsafe-eval'">
    <link href='https://fonts.googleapis.com/css?family=Raleway:400,100,200,300,500,600,700,800,900' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Montserrat' rel='stylesheet' type='text/css'>

    <script src="components/loader.js"></script>
    <script>
        ons.bootstrap();
    </script>    
    <script> angular.module('app',  ['onsen']);</script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script src="js/roundProgress.min.js"></script>
    <script src="js/controller.js"></script>

    <link rel="stylesheet" href="components/loader.css">
    <link rel="stylesheet" href="css/style.css">



</head>
<body>
<ons-page>
    <ons-tabbar position="top"  >
      <ons-tabbar-item page="dashboard.html" style="margin-top:20px"><span style="margin-top:20px"><img src="img/icon.svg" width="34"/></span></ons-tabbar-item>
      <ons-tabbar-item page="dashboard.html"  icon="ion-ios-pulse-strong" active="true"  class="tab-bar__button tab-bar--top-border__button"></ons-tabbar-item>
      <ons-tabbar-item page="timeline.html"  icon="ion-android-calendar"></ons-tabbar-item>
      <ons-tabbar-item page="capture.html"  icon="ion-pinpoint"></ons-tabbar-item> 
      <ons-tabbar-item page="settings.html"  icon="ion-android-settings"></ons-tabbar-item>
    </ons-tabbar>
</ons-page>

</body>
</html>

timeline.html

<ons-page ng-controller="CActivity">
<ons-toolbar>
    <div class="center">History</div>
</ons-toolbar>
</page>

Controller file, controller.js

app.controller('CActivity', ['$scope', '$http', function($scope, $http) {
    // do stuff here alert('hello');
      }]);

And get this error also:

CActivity is not a function got undefined


Solution

  • As the error says, app does not exists. ons.bootstrap() returns an AngularJS module as explained in the docs, so you can do something like this:

    var app = ons.bootstrap();
    app.controller('CActivity', ... );
    

    Hope it helps!