我正在尝试使用ReactJS与AngularJS,但它没有解决。有人可以请我指导我们如何将他们凝聚在一起?还是请指出这里是什么?
我的index.html如下:
<!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>
这是我的reactExample.js的写法:
/** * @jsx React.DOM */ var testMy = React.createClass({ render: function(){ return ( <p>Hello</p>) } });
而我的angularExample.js如下所示:
var myapp = angular.module('MyApp',[]); myapp.controller('Ctrl1',['$scope',function($scope){ $scope.clickMe = function(){ alert("Clicked!"); React.renderComponent(testMy,elem[0]); } }]);
它不显示任何东西(除了警报)。我期望看到’Hello’打印在那里,但它在控制台中引发以下错误:
Error: Invariant Violation: prepareEnvironmentForDOM(...): Target container is not a DOM element
任何帮助将不胜感激。
已经@Simon史密斯提到为什么错误发生在React.renderComponent期望第二个参数,但是您在控制器中播放DOM操作的方式是不合适的。在AngularJs中DOM操作应该是指令。让我们看看它是如何
从Facebook’s React vs AngularJS: A Closer Look博客
React components are far more powerful than Angular templates; they should be compared with Angular’s directives instead.
这个博客的底部使用React和AngularJS在一起,你可以看到角度和反应如何一起玩。
从react网站
React components implement a render() method that takes input data and returns what to display.
在angularjs中,组件由指令呈现
看到这个plunker我在哪里集成anglejs并做出反应。
在react-example.js中,我创建了虚拟dom元素
var Hello = React.createClass({ render: function() { return React.DOM.div({},'Hello ' + this.props.name); } });
而myMessage指令渲染虚拟dom
React.renderComponent(Hello({name: scope.myModel.message}),document.getElementById('example'));