Angular 在 Aurelia 服役?

Angular Service in Aurelia?

我还没有找到详细说明如何从 Angular 1.x 迁移到 Aurelia 的合适文档。到目前为止,我只看到人们详细说明了如何使用 @customElement 在 Aurelia 中重新制作 Angular directive 的概念。好吧,很简单。但是这些例子总是,总是只是模拟数据。

也就是说,Angular 服务是可以注入任何 controller/directive/service 的单例,并且通常允许从服务器获取数据(即 PersonServiceOrdersService).

但是这些 data services 在 Aurelia 中是如何建模的?一切都只是一个 class 吗?它seems like it.

基本上,我会看到一些代码示例,一个 hello-world,它可以有效地从服务中获取数据,并将其提供给 @customElement。 HTTP 调用去哪里了?我们如何进行 HTTP 调用? Angular 使用 $http,Aurelia 呢?

编辑

这是一个简单的 angular 服务。如何在 Aurelia 攻击这个?

app.service('SomeDataService', function () {
    return {
        getMyData: function (options) {
            return $.ajax(options);
        }
    }
});

是的- 很简单 ES6/ES7 类。您的数据服务中没有框架入侵。

我的数据-service.js

import {HttpClient} from 'aurelia-http-client'; // or 'aurelia-fetch-client' if you want to use fetch
import {inject} from 'aurelia-framework';

@inject(HttpClient)
export class MyDataService {
  constructor(http) {
    this.http = http;
  }

  getMyData() {
    return this.http.get(someUrl);
  }
}

花式定制-element.js

import {MyDataService} from './my-data-service';
import {inject} from 'aurelia-framework';

@inject(MyDataService) // aurelia's dependency injection container will inject the same MyDataService instance into each instance of FancyCustomElement
export class FancyCustomElement {
  data = null;

  constructor(dataService) {
    this.dataService = dataService;
  }

  // perhaps a button click is bound to this method:
  loadTheData() {
    this.dataService.getMyData()
      .then(data => this.data = data);
  }
}