angularjs helpers for electron apps
npm install angular-electronbower install angular-electronUse 0.1.x for electron < 0.35.0 and 0.2.x for electron > 0.35.0
<body><scriptsrc="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script><scriptsrc="angular-electron.js"></script></body>angular.module('myModule',['angular-electron']);These are all the renderer modules that are available as angular services:
desktopCapturer, ipcRenderer, webFrame, clipboard, crashReporter, nativeImage, screen, shell
To use them, simply inject them to your components:
angular.module('myModule').controller('myCtrl',['shell',function(shell){shell.showItemInFolder(pathToItem);}]);These are all the main modules that are available as angular services:
app, autoUpdater, BrowserWindow, contentTracing, dialog, globalShortcut, Menu, MenuItem, powerMonitor, powerSaveBlocker, protocol, webContents, tray
Node modules:
buffer, child_process, cluster, crypto, dns, events, fs, http, https, net, os, path, punycode, querystring, readline, stream, string_decoder, tls, dgram, url, util, v8, vm, zlib
All of the modules are lazy required (required only on use).
In order to use a node package (e.g. moment), use the remoteProvider to register the package to an angular service.
angular.module('myModule').config(['remoteProvider',function(remoteProvider){remoteProvider.register('moment');}]);or
angular.module('myModule').config(['remoteProvider',function(remoteProvider){remoteProvider.register({name: 'newName',require: 'moment'});}]);then inject it as a regular service
angular.module('myModule').controller('myCtrl',['moment',function(moment){}]);or
angular.module('myModule').controller('myCtrl',['newName',function(moment){}]);You can also register a module by function:
angular.module('myModule').config(['remoteProvider',function(remoteProvider){remoteProvider.register('exec',function(remote){returnremote.require('child_process').exec;});}]);then use it
angular.module('myModule').controller('myCtrl',['exec',function(exec){exec('ls');}]);electron process objects are available as angularjs constants.
angular.module('myModule').controller('myCtrl',['process','remoteProcess',function(process,remoteProcess){}]);The current window is also available as angularjs constant.
angular.module('myModule').controller('myCtrl',['currentWindow',function(currentWindow){}]);The current web contents module is also available as angularjs constant.
angular.module('myModule').controller('myCtrl',['currentWebContents',function(currentWebContents){}]);This is a directive which opens a link in the default desktop browser.
<ahref="https://google.com" external-link>google</a><buttonexternal-link="https://google.com">google</button>safe shutdown is a service which handles pre-shudown actions.
angular.module('myModule').controller('myCtrl',['safeShutdown',function(safeShutdown){safeShutdown.register(function(){logout();});}]);The function can return a promise to handle async operations.
You can register multiple functions
Then use currentWindow.safeReload or app.safeQuit to reload/quit your app.
These methods are available only after safeShutdown is instantiated.