Saya cuba mencipta objek JS yang mengandungi semua URL.
Saya mahu mencapai ini melalui bahagian data():
export default defineComponent({ name: 'MyPage', data() { backendUrls: {...} } })
Melihatnya dengan cara yang lebih mudah, ia akan kelihatan seperti ini:
backendUrls: { baseUrl: "http://localhost:8080", baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; } userAdd: function() { return this.baseUrlWithPrefix() + "/user/add"; } }
Saya boleh menggunakan kata kunci this
kerana ia menunjuk ke objek yang sama dengan harta yang diberikan.
Tetapi saya mahu membelahnya lagi dan mencipta objek dalam objek:
backendUrls: { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: ... }, socketUrls: { messageUrls: { userAdd: ... } } }
Di sini, jika saya mencuba generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1" }}
, ia tidak akan berfungsi kerana ia tidak menemui baseUrl
, kerana kata kunci generalUrls: { baseUrlWithPrefix: function() { return this.baseUrl + "/ver1"; }}
,它不会起作用,因为它找不到baseUrl
,因为this
关键字指向generalUrls
对象,而不是backendUrls
对象,baseUrl
menghala ke objek generalUrls
, bukan objek backendUrls
, di mana baseUrl
wujud.
Saya memerlukan sesuatu seperti ini:
backendUrls: { baseUrl: "http://localhost:8080", generalUrls: { baseUrlWithPrefix: function() { return {goBackToParentObject}.this.baseUrl + "/ver1"; } }, socketUrls: { messageUrls: { userAdd: function() { return {goBackToParentObject}.this.generalUrls.baseUrlWithPrefix() + "/user/add"; } } } }
Hanya ubah cara anda memanggil fungsi seperti berikut