@cerebral/angularjs

Angularjs view for Cerebral.

Install

npm install @cerebral/angularjs angular

Config

import angular from 'angular'
import {addModule, connect} from '@cerebral/angularjs'
import {state, signal} from 'cerebral/tags'

addModule(angular)

angular.module('app', ['cerebral'])
  .config(function (cerebralProvider) {
    cerebralProvider.configure({
      state: {
        foo: 'bar'
      },
      signals: {
        clicked: []
      },

      // Special controller property to expose core
      // angular services to your signals
      services: ['$http', '$timeout']
    })
  })
  ...

connect

import angular from 'angular'
import {addModule, connect} from '@cerebral/angularjs'
import {state, signal} from 'cerebral/tags'

angular.module('app', ['cerebral'])
  .config(...)
  .component('myComponent', {
    template: '<div ng-click="$ctrl.click()">{{$ctrl.foo}}</div>',
    controller: connect({
      foo: state`foo`,
      click: signal`clicked`
    }, 'MyComponent', ['cerebral', function MyController (cerebral) {

      // In some cases you might need access to cerebral's controller.
      // You can inject the cerebral angular service and
      // access it's controller property anywhere in your app
      cerebral.controller.getSignal('mySignal')()

      // Optionally add custom behaviour to controller
    }])
  })

Since angular doesn’t expose the component name, you will need to provide one to connect for the component to be given a name in cerebral.

You can call connect in the following ways:

connect(dependencies)
connect(dependencies, name)
connect(dependencies, controller)
connect(dependencies, name, controller)