angular-state-view v3.0.9
StateView
Provides nested view management with template support.
StateView is a modular component designed to be used with StateRouter, an AngularJS state-based router.
Install
To install in your project, install from npm (remember you'll also need to install angular-state-router since it is a dependency)
npm install angular-state-view --saveQuick Start
Include the state-view.min.js script tag in your .html:
<html ng-app="myApp">
  <head>
    <script src="/node_modules/angular/angular.min.js"></script>
    <script src="/node_modules/angular-state-router/dist/state-router.min.js"></script>
    <script src="/node_modules/angular-state-view/dist/state-view.min.js"></script>
    <script src="/js/app.js"></script>
  </head>
  <body>
    ...
  </body>
</html>In app.js add angular-state-router and angular-state-view as a dependency when your application module is instantiated.  
angular.module('myApp', ['angular-state-router', 'angular-state-view']);During the configuration of StateRouter utilize templates to associate a view with a rendering an HTML partial
angular.module('myApp', ['angular-state-router', 'angular-state-view'])
  .config(function($stateProvider) {
    $stateProvider
      // Define states
      .state('landing', {
        url: '/',
        templates: {
          // HTML fragment partial template
          sideBar: '/sidebar.html',
          // Function injection template
          greetingPopOver: function($templateCache, $greetingService) {
            return $templateCache.get('greeting_' + $greetingService.message() + '.html');
          },
          // Promised template
          calloutBlock: function($q, $timeout) {
            var deferred = $q.defer();
            $timeout(function() {
              deferred.resolve('Dolor ipsum');
            }, 3000);
            return deferred.promise;
          }
        }
      })
      // Set initialization location; optionally
      .init('landing');
  });Now in the view you can utilize the view id defined in the templates by using the sview element.  
<body>
	<div class="wrapper">
		<sview id="sideBar"></sview>
		<sview id="greetingPopOver"></sview>
	</div>
	<div class="popover">
		<sview id="calloutBlock"></sview>
	</div>
</body>Including nesting views to form template structures where the view sideBar might utilize the following code HTML partial sidebar.html as a template:
<div class="nav_sidebar">
	<ul class="nav_main">
		<li><a href="#">Products</a></li>
		<li><a href="#">Catalogs</a></li>
		<li><a href="#">Contact</a></li>
	</ul>
	<sview id="messagingCallout"></sview>
</div>Controllers
Controllers can be instantiated on a view $scope during rendering by specifying a controllers Object
angular.module('myApp')
  .controller('ProductController', function($scope, $state) {
    $stateProvider
      // Define states
      .state('products', {
        url: '/products',
        templates: {
          productItem: '/item.html'
        },
        controllers: {
        	productItem: 'ProductItemController'
        }
      });
  });Controllers must use the same view id.  
Resolve
States that include a resolve property will resolve all promises and expose data to controllers.
angular.module('myApp')
  .config(function() {
      $stateProvider
        // Define states
        .state('products.items', {
          url: '/products/:item',
          resolve: {
          	currentProduct: function(ProductService) {
	           return ProductService.get();
          	}
          },
          templates: {
            productItem: '/item.html'
          },
          controllers: {
          	productItem: 'ProductItemController'
          }
        });
    });
  })
  ProductService.get() should return a promise so that you may access the resolved value of currentProduct via your controller as follows: 
angular.module('myApp')
  .controller(function(currentProduct, $scope) {
    $scope.product = currentProduct;
  });Events
Events are broadcast on the $rootScope.  
$viewRender
This event is broadcasted when the view is rendered.
$viewError
This event is broadcasted when an error occurs during view rendering.
API Directives
sview
- id {String} A unque identifier associated with a template
A view tag where the contents are dynamically replaced as states defined templates.
Example
States having templates.layout defined will insert and compile relevant HTML partials.  
<sview id="layout"></sview>Where the state definition is either a HTML partial:
$stateProvider.state('my.state', {
	templates: {
     layout: '/single-col.html',
	}
});Or function injection template
$stateProvider.state('my.state', {
	templates: {
     layout: function($templateCache, $greetingService) {
            return $templateCache.get('greeting_' + $greetingService.message() + '.html');
	}
});Or promised template
$stateProvider.state('my.state', {
  templates: {
   layout: function($q, $timeout) {
     var deferred = $q.defer();
     $timeout(function() {
       deferred.resolve('Dolor ipsum');
     }, 3000);
     
     return deferred.promise;
   }
});License
Copyright (c) 2015 Henry Tseng
Released under the MIT license. See LICENSE for details.