2017-06-06 56 views
1

我想在我的視圖模板使用靜態類常量如何使用靜態方法在視圖模板

的Javascript

class FilterModel { 
    static const FILTER_TYPE_STRING() { 
    return 'string'; 
    } 
} 

HTML

<div show.bind="selectedFacet.type===FilterModel.FILTER_TYPE_STRING"> 
</div> 
+0

im使用ES2016/ESNext。你能提供一個完整的例子嗎? –

+0

對不起,你的問題對我沒有意義。視圖模型是一個實例。爲什麼你想從你自己的類中使用靜態方法? –

回答

2

簡短的回答:綁定語言不支持。

我之前遇到過這個問題,但沒有找到一個好的解決方法。在這種情況下,我通常定義一個常量,類將在構造函數中設置該值並添加註釋以顯示它應該是靜態的。

const _filterTypeString: string = 'string'; 

export class FilterModel { 
    /*static*/ filterTypeString: string = _filterTypeString; 
} 

再回應:在JavaScript靜態成員被直接transpiled進級,不進原型,所以實例沒有提到它。所不同的是:

class MyClass { 
    instanceMember: number = 256 
    static staticMember: number = 1024; 
} 

//referencing them: 
MyClass.prototype.instanceMember 
MyClass.staticMember 

每次當你創建一個對象實例,它創建原型的副本,讓this必須原型相同的值。這就是Aurelia所做的,在創建視圖模型時創建一個實例。

在視圖模板中,您只能訪問該對象的成員,該對象從原型繼承。由於靜態方法不是該對象的成員,因此無法訪問它。當然,你可以創建一個參考,但我發現這個解決方法比上面的更麻煩。隨着代碼例如:

export class FilterModel { 
    static filterTypeString: string = 'string'; 
    refToFilterTypeString = FilterModel.filterTypeString; 
} 

HTML:

<div show.bind="selectedFacet.type === refToFilterTypeString"> 
</div> 
相關問題