2016-04-14 14 views
0

私は私がコンソール検証と継承

に次のエラーを取得していますsupplierModel.jsに

import { BaseModel } from "./baseModel"; 

let apSupplierCode; 
let discountRate; 

export class Supplier extends BaseModel { 

constructor() { 
    super(); 

    super.validation = validation.on(this) 
     .ensure('apSupplierCode') 
      .isNotEmpty() 
      .hasLengthBetween(3, 6) 
     .ensure('discountRate') 
      .isNotEmpty() 
      .containsOnlyDigits() 
      .isBetween(10, 45.99); 
    } 
} 

を、それを拡張していますbaseModel.js

import { Validation } from 'aurelia-validation'; 

let id; 
let version; 
let validation; 

@inject(Validation) 

export class BaseModel { 

constructor(validation) { 

    this.validation = validation; 

    } 
} 

と呼ばれる以下の基本クラスを作成しました

inner error: ReferenceError: validation is not defined 
    at new Supplier http://localhost:9000/dist/models/supplierModel.js:63:55) 

私はget/setアクセサ、super.validationとちょうど妥当性検査で試しましたが、違いはありません。

サプライヤは、親(BaseModel)クラスで変数を表示できないのはなぜですか?

答えて

0

私は、依存性注入がそのように動作するとは思わない、それはあなたが作成している現在のオブジェクトにのみ注入されます。これは、目的を倒すが、何をする必要がありますことのようなものである可能性があります

import { Validation } from 'aurelia-validation'; 
export class Supplier extends BaseModel { 

@inject(Validation) 
constructor(validation) { 
    super(validation); 
    // Do stuff 
    } 
} 

他の代替は、明示的に基底クラスにコンテナから

import {Container} from 'aurelia-dependency-injection'; 
import {Validation} from 'aurelia-validation'; 

export class BaseModel { 
constructor() {   
    this.validation = Container.instance.get(Validation);  
    } 
} 
を依存関係をロードしています