bower install ngReact
In your HTML:
<script src="bower_components/angular/angular.js"></script> <script src="bower_components/underscore/underscore-min.js"></script> <script src="bower_components/react/react.js"></script> <script src="bower_components/react/JSXTransformer.js"></script> <script src="bower_components/ngReact/ngReact.min.js"></script>
Declare ngReact as a dependency of your Angular module:
angular.module('ngReactDemo', ['ngReact']);
Render a user-defined React component via Angular. This got up to nearly 70% faster performance.
You'll have to create a globally available React component, like this iterator example (but it could be anything):
<script type="text/jsx"> /** @jsx React.DOM */ window.Repeater = React.createClass({ render: function() { var scope = this.props.scope; var rows = _.map(scope.data, function(datum) { var clickHandler = scope.$apply.bind( scope, scope.clickHandler.bind(null, datum) ); return ( <tr onClick={clickHandler}> <td>{datum['0']}</td> <td>{datum['1']}</td> <td>{datum['2']}</td> <td>{datum['3']}</td> <td>{datum['4']}</td> </tr> ); }); return ( <tbody> {rows} </tbody> ); } }); </script>
And then invoke it using the ng-react-component directive:
<table class="table" ng-react-component="Repeater" data="data"></table>
Render a unit of HTML for each entry in a collection just like you use ng-repeat. This got up to 450% slower performance.
You'll use this directive just like you use ng-repeat. Your HTML will look like this:
<table class="table"> <tbody> <tr ng-react-repeat="row in data" ng-click="clickHandler(row)"> <td ng-bind="row.0"></td> <td ng-bind="row.1"></td> <td ng-bind="row.2"></td> <td ng-bind="row.3"></td> <td ng-bind="row.4"></td> </tr> </tbody> </table>
And that's it - just make sure $scope.data exists. Please note that this only supports the ng-bind and ng-click directives and the class and id attributes.
With this code in particular, I would love any help I could get in figuring out how my performance is so bad.