1.0.1 • Published 8 years ago

angular-vf-remote-actions v1.0.1

Weekly downloads
11
License
MIT
Repository
github
Last release
8 years ago

angular-vf-remote-actions

An Angular 1.x module that makes it easy to call Salesforce Remote Actions. This module is only useful if you host your Angular app in a Visualforce page. For more information on Visualforce Remote Actions read the Salesforce Documentation on JavaScript Remoting for Apex Controllers.

Usage

  1. Install via npm

    npm install angular-vf-remote-actions --save

    or you can download manually and include it in your project.

  2. Reference in your source code

    <!-- local development -->
    <script src="node_modules/angular-vf-remote-actions/dist/vfrAction.provider.js"></script>
    
    <!-- Visuaforce: assuming you zipped the dist folder into a Static Resource called 'vfrAction' -->
    <script src="{! URLFOR( $Resource.vfrAction, 'dist/vfrAction.provider.js' ) }"></script>
  3. Include vfrAction as a dependency in your application module

    var app = angular.module('myApp', ['vfrAction']);
  4. Inject VfrAction in your controller

    app.controller('myCtrl', function(VfrAction) {
    
      // create a new remote action.
      // This will call the method 'myRemoteAction' on the page controller 'MyApexController'
      new VfrAction('MyApexController.myRemoteAction')
    
        // pass some parameters to the remote action
        .invoke('arg1', 'arg2')
    
        // do something with the results
        .then(function(result){
          console.log(result);
        })
    
        // handle any errors
        .catch(function(event){
          console.error(event);
        });
    
    });

Logging

This module will log all calls and responses to $log.debug. You can disable this with the following configuration:

app.config(function($logProvider){
  $logProvider.debugEnabled(false);
});

Hosting in Salesforce

You will need a Visualforce page to host your application, and an Apex Controller for your Remote Actions. The best way to reference this module from a Visualforce page is to upload it as a Static Resource.

Reference it in your Visualforce page:

<!-- assuming you zipped the dist folder into a Static Resource called 'vfrAction' -->
<script src="{! URLFOR( $Resource.vfrAction, 'dist/vfrAction.provider.js' ) }"></script>

Create a Remote Action on your Apex Controller:

@RemoteAction
global static Account[] myRemoteAction(String name) {
  return [SELECT Id FROM Account WHERE Name = :name];
}

Examples

Example usage can be found at index.html. If you have cloned this repo, you can run the examples page locally with the following command:

npm start

Configuration

You can set some defaults for your actions by configuring the provider.

// configuration
app.config(function(VfrActionProvider){

  // developer orgs only
  VfrActionProvider.defaultNamespace('gbutt');

  // this controller will be prefixed on all your actions, unless you specify another controller
  VfrActionProvider.defaultController('MyApexController');

  // this configuration will get merged in all your actions.
  // You can override it on a per action basis.
  VfrActionProvider.defaultConfiguration({
    timeout: 10000,
    escape: false
  });


  // You can predefine a unique name and configuration for your remote actions.
  var actions = {};
  actions.myAction = {
    actionName: 'myRemoteAction',
    configuration: {
      escape: true,
      buffer: true
    }
  };
  VfrActionProvider.actions(actions);
});

// usage
app.controller('myCtrl', function(VfrAction) {

  // call a predefined action.
  // This will invoke gbutt.MyApexController.myRemoteAction
  // with the configuration {timeout: 10000, escape: true, buffer: true}
  new VfrAction('myAction').invoke();

  // override the default controller
  new VfrAction('AnotherController.anotherAction').invoke();

  // merge and override the default configuration
  new VfrAction('yetAnotherAction', { escape: true }).invoke();
});

Mocking Remote Actions for Local Development

We provide a handy utility for mocking callouts to Remote Actions at dist/vfrMock.js. See example/mockedVfrActions.js for usage.