在使用ES6创建服务时,我在访问Angular内置服务时遇到了问题,例如$ http.
例如,我正在创建一个"ResultsFinder"服务,它将执行一个AJAX调用然后做一些事情.问题是我只能在构造函数上访问$ http(如果我将其作为参数传递),而不是其他方法(例如getResults).
看到这个代码示例:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {}
getResults() {
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular
.module('itemManager')
.service('ResultsFinder', ResultsFinder);
}());Run Code Online (Sandbox Code Playgroud)
在getResults内部,我无法访问$ http.为了获得访问权限,我应该做一些我感觉不正确的事情:
(() => {
'use strict';
class ResultsFinder {
constructor($http) {
this.$http = $http;
}
getResults() {
// Here I have access to this.$http
return 'ResultsFinder';
}
}
/**
* @ngdoc service
* @name itemManager.service:ResultsFinder
*
* @description
*
*/
angular …Run Code Online (Sandbox Code Playgroud)javascript web-services angularjs ecmascript-6 angular-services
所以我使用ReactDOM.createPortal在它的正常 DOM 放置之外渲染一个元素。我必须这样做,因为我正在与创建它自己的元素(在我的范围之外)的库进行交互,并且我必须将我的一个 DOM 元素放在他们的元素中。
我正在使用的createPortal是:
<div class="target">
<div />
<div class="myDiv" />
</div>
Run Code Online (Sandbox Code Playgroud)
我正在努力实现的目标:
<div class="target">
<div class="myDiv" />
<div/>
</div>
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到如何更改createPortal使其将节点作为第一个子节点插入的行为。