instalar horizontal ejemplos chart bootstrap bar angularjs reactjs

horizontal - Usando ReactJS con AngularJS



instalar chart js (5)

renderComponent espera un elemento DOM como segundo argumento para inyectar el componente. Parece que es de lo que se queja el error.

Estoy tratando de usar ReactJS con AngularJS pero no está funcionando. ¿Podría alguien por favor dirigirme sobre cómo unirlos? ¿O por favor señale qué me falta aquí?

Mi index.html es el siguiente:

<!DOCTYPE html> <html data-ng-app="MyApp"> <head> <title>My Test</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body data-ng-controller="Ctrl1"> <div id="myDiv"> <button id="btn1" data-ng-click="clickMe()">Click Me</button> </div> <script src="http://fb.me/react-0.8.0.js"></script> <script src="http://fb.me/JSXTransformer-0.8.0.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script> <script type="text/jsx" src="reactExample.js"></script> <script src="angularExample.js"></script> </body> </html>

Así es como se ha escrito mi reactExample.js:

/** * @jsx React.DOM */ var testMy = React.createClass({ render: function(){ return ( <p>Hello</p>) } });

Y mi angularExample.js es el siguiente:

var myapp = angular.module(''MyApp'',[]); myapp.controller(''Ctrl1'',[''$scope'',function($scope){ $scope.clickMe = function(){ alert("Clicked!"); React.renderComponent(testMy, elem[0]); } }]);

No muestra nada (que no sea la alerta). Espero ver ''Hola'' impreso allí pero arroja el siguiente error en la consola:

Error: Invariant Violation: prepareEnvironmentForDOM(...): Target container is not a DOM element

Cualquier ayuda sería muy apreciada.


Ya @Simon Smith mencionó por qué el error occury React.renderComponent espera un segundo argumento, pero la forma en que usted juega la manipulación DOM dentro del controlador no es apropiada. En AngularJs manipulación del DOM debe estar en la directive . Veamos cómo podría ser

De React vs AngularJS de Facebook: un blog más cercano

Los componentes React son mucho más poderosos que las plantillas Angulares; deberían ser comparados con las directivas de Angular.

Abajo de este blog Usando React y AngularJS juntos podemos ver cómo angular y react pueden jugar juntos.

Desde el sitio web de reaccionar

Los componentes React implementan un método render () que toma datos de entrada y devuelve qué mostrar.

En angularjs componentes se representan por directive

Ver este plunker donde integro angularjs y react .

En react-example.js creo virtual dom elemento virtual dom

var Hello = React.createClass({ render: function() { return React.DOM.div({}, ''Hello '' + this.props.name); } });

Y la directiva myMessage renderiza la virtual dom

React.renderComponent(Hello({name: scope.myModel.message}), document.getElementById(''example''));

Donde virtual dom propiedad de name virtual dom se vinculará con scope.myModel.message


Para usar Reaccionar en mi controlador, hago esto

myApp.controller(function($scope){ $scope.myComponent = {}; $scope.myComponent.setState({data: "something"}); });

y en mi componente React:

window.myComponent = React.createClass({ getInitialState: function(){ return { data:'''' } }, componentWillMount: function(){ var scope = this.props.scope; scope.myComponent = this; }, render:func ..... });

Estoy usando la directiva ngReact de David Chang, que transfiere $ scope como propiedad a un componente. Entonces ahora puede llamar a setState desde su controlador, forzando al componente de reacción a volver a renderizar :)

Tengo un ejemplo más grande de arriba en mi React-Sandbox


Consideraría hacer la integración a través de una directiva, ya que a menudo es el enfoque recomendado para integrar código no angular con angular.

Aquí hay un ejemplo:

angular.module(''app'').directive(''greeting'',[function(){ return { restrict:''AE'', scope:{name:''@''}, link: function (scope, elem, attrs){ var GreetingSection = React.createClass({displayName: ''Greeting'', render: function() { var message = "Good morning " + this.props.data.name + ", how are you?"; return React.createElement(''div'', {className: "greeting"},message); } }); React.renderComponent(GreetingSection({data:scope}), elem[0]); } }; }]);

Más información aquí: http://www.syntaxsuccess.com/viewarticle/547bbd04fa0710440b45e41c


En su lugar, intente utilizar el módulo angular ngReact en lugar de usar ReactJs directamente. Esto proporciona una integración perfecta con angularJs también. Verifique las muestras / ejemplos @ https://github.com/davidchang/ngReact