2017-02-22 6 views
-1

私はクラスAbstractRepositoryを持ち、クラスUserRepositoryはAbstractRepositoryを継承しています。私は自分のコンストラクタでsuper()を宣言していますが、_httpは定義されていません。 UserRepositoryクラスに$ httpを挿入するにはどうすればいいですか?コンストラクタsuper()es6 angularjs

AbstractRepository:

import _ from 'lodash'; 
import 'rxjs/add/operator/map'; 

class AbstractRepository { 
    _http; 
    _config; 
    _Model; 

    constructor($http, config, Model) { 
     'NgInject' 
     this._http = $http; 
     this._config = config; 
     this._Model = Model; 
    } 

    /** 
    * Gets all instances of repository entities 
    * 
    * @returns {Observable<Model[]>} - List of observables of all entities 
    */ 
    getAll() { 
     const url = this._config.url; 
     return this._http.get(url) 
      .map(dataList => dataList.json()) 
      .map(dataList => _.map(dataList, item => new this._Model(item))); 
    } 

    /** 
    * Gets a specific item of repository entity 
    * 
    * @param {number} itemId - ID of an item to find 
    * @returns {Observable<Model>} - Observable of repo entity item 
    */ 
    getItem(itemId) { 
     const url = this._config.url + itemId; 
     return this._http.get(url) 
      .map(item => item.json()) 
      .map(item => new this._Model(item)); 
    } 

    /** 
    * Creates a specific item of repository entity 
    * 
    * @param {Model} item - Item to create 
    * @returns {Observable<Model>} - Observable of recently created item 
    */ 
    createItem(item) { 
     const url = this._config.url; 
     return this._http.post(url, item) 
      .map(item => item.json()) 
      .map(item => new this._Model(item)); 
    } 

    /** 
    * Updates a specific item of repository entity 
    * 
    * @param {number} itemId - ID of an item to update 
    * @param {Model} item - Wanted updated item 
    * @returns {Observable<Model>} - Observable of repo entity item 
    */ 
    updateItem(itemId, item) { 
     const url = this._config.url + itemId; 
     return this._http.put(url, item) 
      .map(item => item.json()) 
      .map(item => new this._Model(item)); 
    } 
} 

export {AbstractRepository} 

UserRepository:

import { USER_REPO_CONFIG } from '../repository.config'; 
import { AbstractRepository } from '../abstract.repository'; 
import { UserModel } from './user.model'; 

import 'rxjs/add/operator/map'; 

class UserRepository extends AbstractRepository { 
    _http = $http; 
    constructor() { 
     'NgInject' 
     super(_http, USER_REPO_CONFIG, UserModel); 
    } 

    /** 
    * Gets the user by ID 
    * 
    * @param {number} userId - ID of a user to find 
    * @returns {Observable<UserModel>} - User model instance 
    */ 
    getUser(userId) { 
     return this.getItem(userId); 
    } 

    /** 
    * Creates the user 
    * 
    * @param {UserModel} user - User model instance 
    * @returns {Observable<UserModel>} - User model instance observable 
    */ 
    createUser(user) { 
     return this.createItem(user); 
    } 

    /** 
    * Updates the user 
    * 
    * @param {number} userId - ID of a user to update 
    * @param {UserModel} user - User model instance 
    * @returns {Observable<UserModel>} - User model instance observable 
    */ 
    updateUser(userId, user) { 
     return this.updateItem(userId, user); 
    } 
} 

export {UserRepository}; 
+0

'_http = $ http;'とは何ですか? ES6は無効です。そして '$ http'はどこから来たと思いますか? – Bergi

+0

standart angularjs $ httpをクラスプロパティ –

+0

に設定したいランダムな 'NgInject'文字列は意味がありません –

答えて

0
あなたが親コンストラクタにそれを転送したい場合は、まだあなたの子供のコンストラクタのパラメータとして $httpを宣言する必要があり

class UserRepository extends AbstractRepository { 
    constructor($http) { 
     'NgInject' 
     super($http, USER_REPO_CONFIG, UserModel); 
    } 
    … 
} 
+0

ありがとうございました! –

関連する問題