2016-03-28 149 views
1

引用在插件定義的靜態方法我有JS utilities plugin其中包含與一個靜態方法下面的類,但是它不能被從使用此實用工具插件的應用程序所引用。無法從客戶端應用程序

export class Helpers { 
 
    static generateGUID() { 
 
    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, a=>(a^Math.random() * 16 >> a/4).toString(16)); 
 
    } 
 
}

客戶端應用程序調用助手:

import {Helpers} from 'utilites'; 
 
export class MyClass { 
 
    constructor() { 
 
    } 
 

 
    test() { 
 
    //can't reference Helpers 
 
    console.log(Helpers.generateGUID()); 
 
    } 
 
}

但是,如果我改變靜態方法非靜態方法像下面,並從引用它客戶端應用程序,它可以訪問:

export class Helpers { 
 
    //removed static 
 
    generateGUID() { 
 
    return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, a=>(a^Math.random() * 16 >> a/4).toString(16)); 
 
    } 
 
}

客戶端應用程序調用助手:

import {inject} from 'aurelia-framework'; 
 
import {Helpers} from 'sp-utilities'; 
 

 
@inject(Helpers) 
 
export class MyClass { 
 
    constructor(helpers) { 
 
    this.helpers = helpers; 
 
    } 
 

 
    test() { 
 
    //this works 
 
    console.log(this.helpers.generateGUID()); 
 
    } 
 
}

我沒有確認,如果我使用相同的助手代碼靜態方法的應用程序中,我可以像Helpers.generateGUID()那樣調用它,而不用實例化Helpers。有誰知道爲什麼我的插件中的靜態方法在從客戶端應用程序引用時不可訪問?

這可能與我如何在index.html中導出Helpers類有關,但我不確定。

export {Helpers} from './helpers'; 
 
export function configure(config) { 
 
    config.globalResources(); 
 
}

+0

你不應該使用靜態方法的類。只要將它作爲一個方法的對象。在這種情況下,您可能需要考慮直接導出'generateGUID'函數,因爲它似乎是唯一的導出。 – Bergi

回答