2015-12-18 1 views
1

в соответствии с тем, что я читал в блогах, вот как вы делаете DI в Aurelia и ES6, но это не работает.ES6 Aurelia зависимость путаницы инъекций

diag.js:

export class Diag { 
    constructor(){ 
     this.test = `success`; 
    } 
} 

testservice.js:

import {inject} from 'aurelia-framework'; 
import {Diag} from './diag'; 

@inject(Diag) 
export class TestService{ 
    constructor(diag){ 
    console.log(diag); 
    } 
} 

>undefined. 

В консоли я получаю только 'не определено'. Однако, если я делаю это без DI она отлично работает:

import {Diag} from './diag'; 

export class TestService{ 
    constructor(){ 
    console.log(Diag); 
    } 
} 

Так что, если я импортировать его без DI он работает, но когда я пытаюсь сделать DI, как я вижу в онлайн примерах он говорит мне, что класс не определено. Я очень смущен. Любая помощь?

+0

Для меня это работает правильно, но я использую TypeScript с '@ autoinject'. Может быть, это что-то с транспилером? Кроме того, используете ли вы последнюю версию aurelia (бета)? – MikeSW

+0

Это хороший момент Майка. Я использую бета-версию 1. Вчера они просто анонсировали бета-версию 2, и я должен ее скачать. Я просто обеспокоен тем, что что-то в Beta 2 может сломать мой код Beta 1, а затем у меня будет больше проблем для отладки. Наверное, я все время параноик в качестве разработчика MS. LOL – user441058

+0

Исправление - вчера был только релиз патча, а не бета 2. – user441058

ответ

1

убедитесь, что вы используете инъекцию зависимости, чтобы получить экземпляр TestService.

import {inject} from 'aurelia-framework'; 
import {TestService} from './test-service'; 

@inject(TestService) 
export class App { 
    constructor(service) { 
    ... 
    } 
} 
+0

Привет, Джереми, спасибо за все написанное вами письмо на Aurelia. Я использую ваши блоги, чтобы многому научиться. :-) По этой проблеме DI, я использую DI с моим TestService в файле viewmodel js. Странно то, что я предполагаю, что, поскольку Aurelia все еще в бета-версии, разные записи в блогах показывают другой код, не говоря уже о том, что иногда есть и код примера TS. Например, на посту Эйзенберга он сказал, что вы должны объявить своего конструктора конструктором (diag: Diag) {... и это также порождает ошибки. Я думаю, что много учиться. – user441058

+0

Я сделал обновление jspm, и это прояснилось. Кроме того, упомянутое мной предложение Эйзенберга уже работает. :-) – user441058

 Смежные вопросы

  • Нет связанных вопросов^_^