我正在尝试使用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'));