簡短的回答:綁定語言不支持。
我之前遇到過這個問題,但沒有找到一個好的解決方法。在這種情況下,我通常定義一個常量,類將在構造函數中設置該值並添加註釋以顯示它應該是靜態的。
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>
im使用ES2016/ESNext。你能提供一個完整的例子嗎? –
對不起,你的問題對我沒有意義。視圖模型是一個實例。爲什麼你想從你自己的類中使用靜態方法? –