Aurelia的角度服务?

时间:2015-12-15 17:41:32

标签: javascript aurelia

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

也就是说,Angular Services是可以注入任何控制器/指令/服务的单例,通常允许从服务器获取数据(即PersonServiceOrdersService)。

但是这些data services如何在奥里利亚建模?一切都只是一个阶级?它seems like it

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

编辑

这是一个简单的角度服务。怎么会在奥里利亚攻击这个?

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

1 个答案:

答案 0 :(得分:9)

Yep-plain 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);
  }
}