When you have to use Angular inside of Drupal
The angularjs module for drupal will direct you to setup a menu path for Angular.js to get it’s template files.
So the Angular route would look like this
//app.js
behat_reports.config(['$routeProvider',
function ($routeProvider) {
$routeProvider.
when('/', {
templateUrl: '/behat_editor_reports_service_v2/tpl/behat_editor_reports_service_reports_tpl',
controller: 'ReportsAll'
}).
otherwise({
redirectTo: '/'
});
}]);
What I am suggesting is that when bootstraping Angular is to set the path to the “html” template folder. Then your Angular app route can look like this
//app.js
behat_reports.config(['$routeProvider',
function ($routeProvider) {
//Getting the path we set during our drupal modules function
var path = Drupal.settings.behat_reporting_v2.path;
$routeProvider.
when('/', {
templateUrl: '/' + path + '/templates/reports-all.html',
controller: 'ReportsAll'
}).
otherwise({
redirectTo: '/'
});
}]);
It gets the path from a setting I set below, which is the path that renders this drupal url and setups up Angular in your module.
//some drupal module you are making
function behat_reporting_v2_api_reports_ui() {
angularjs_init_application('behat_reports_v2');
$path = drupal_get_path('module', 'behat_reporting_v2');
//Set the drupal path
drupal_add_js(array('behat_reporting_v2' => array('path' => $path)), 'setting');
drupal_add_js($path . '/js/services.js');
drupal_add_js($path . '/js/reportsController.js');
drupal_add_js($path . '/js/app.js');
return theme('behat_reports_v2');
}
You are basically allowing Angular to get the html files it needs without bootstrapping the template system in drupal. Yeah!
comments powered by Disqus