gpt4 book ai didi

angularjs - 在 React 中使用自定义 Angular 指令

转载 作者:行者123 更新时间:2023-12-03 13:31:59 28 4
gpt4 key购买 nike

我正在尝试实现用 React 渲染替换 Angular ng-repeat 的“快速重复”模式。我可以渲染一个基本表格,但该表格需要支持自定义 Angular 指令。我可以获取要在 React 中呈现的自定义指令(作为属性),但它们不起作用。根据 Google 先生的说法,这应该是可能的,但在我看来,也许我需要对包含我的自定义指令的 React 渲染的 HTML 进行 $compile...或者不需要。

这是我的精简测试代码。 “react-test”指令似乎正确渲染了 ReactClass 组件,其中包含一个“ng-monkey”属性,该属性本身就是一个 Angular 自定义指令。猴子好像不行。有什么建议吗?

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Angular React Test</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
</head>
<body ng-app="AngularReactTest" ng-controller="TestController">

<react-test monkey></react-test>

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"> </script>
<script src="https://fb.me/react-0.13.3.js"></script>

<script>
var ReactClass = React.createClass({
displayName: 'ReactClass',
render: function () {
return (
React.DOM.div({ 'data-ng-monkey': '' }, null)
)
}
});

angular
.module('AngularReactTest', [])
.controller('TestController', [function () {
}])
.directive('reactTest', function () {
return {
restrict: 'E',
link: function (scope, el, attrs) {
var test = React.createElement(ReactClass, null, null);
React.render(test, el[0], null);
}
}
})
.directive('ngMonkey', function () {
return {
restrict: 'A',
link: function (scope, el, attrs) {
alert('In ngMonkey link function...making my head hurt...');
},
}
});
</script>
</body>
</html>

这是渲染结果:

<ReactTest>
<div data-ng-monkey></div>
</ReactTest>

最佳答案

我知道这是老话题,但我认为这个解决方案可以帮助某人

React.createClass({
compileDirective: function () {
$compile(this.refs.monkey)($scope);
},
componentDidMount: function () {
this.compileDirective();
},
componentDidUpdate: function () {
this.compileDirective();
},
render: function () {
return (
<div>
<monkey ref="monkey"></monkey>
</div>
);
}
});

关于angularjs - 在 React 中使用自定义 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31462555/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com