小编jef*_*ese的帖子

ES6服务(AngularJS)

在使用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

8
推荐指数
1
解决办法
1万
查看次数

使 ReactDOM.createPortal 插入元素作为目标容器的第一个子元素(而不是最后一个子元素)

所以我使用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使其将节点作为第一个子节点插入的行为。

javascript dom reactjs

6
推荐指数
1
解决办法
2998
查看次数