İstemci tarafı typescript Kodu MVC modeli veri gönderme

oy
11

MVC kullanarak aşağıdaki gibi, bazen, JavaScript enjekte Razor kullanarak istemci tarafında JavaScript için sunucunun modeli veri aktarmak:

<script type=text/javascript>
    var myClientGuid = '@Model.MyServerGuid';
</script>

Bu adlı bir JavaScript değişkeni ayarlar myClientGuidsunucu tarafı modeli özelliğinin değerine MyServerGuid. O müşteri ulaştığında kod tarayıcı içinde şöyle görünür:

<script type=text/javascript>
    var myClientGuid = 'EF0077AB-0482-4D91-90A7-75285F01CA6F';
</script>

Bu harici JavaScript dosyaları bu değişkeni kullanmasını sağlar.

Çünkü Sorum, daktilo, olan bütün kod harici dosyaları yoluyla başvurulan gerekir, kod typescript için sunucu taraflı alanlarını geçmesi için en iyi yolu nedir? Dış kod dosyaları Jilet kodunu içeremez. Ben proje içinde JavaScript ve typescript karıştırma, View, yukarıdaki gibi aynı tekniği kullanmalı mıyım?

Oluştur 09/10/2012 saat 19:13
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
17

Typescript derleyici sadece sunucu tarafı alanının varolduğu bilmesi gerekir. bu en kolay bir şekilde, ortam bildirimleri (spec bakınız bölüm 10) kullanmaktır. Eğer myClientGuid kullanmak için gerekli bir Ts dosyası olsaydı Örneğin, yapabileceğin

declare var myClientGuid: string;

ana ts dosyasının en üstünde. derleyici bu var beyanı için kod oluşturmaz, bu nedenle bir şey clobber olmaz. Şimdi herhangi bir dosya olduğunu ts dosya Küresel alanda bulunan bir myClientGuid dize olduğunu bilecek başvuru.

Cevap 09/10/2012 saat 19:19
kaynak kullanıcı

oy
2

Başka bir çözüm (global değişkenler önlemek için) parametre olarak gerekli sunucu tarafı alanları götüren bir işlevde typescript kodu sarılmasıdır:

Typescript dosyasında:

function setupMyPage(myGuid:string) {
   ...
}

.cshtml olarak:

<script src='@Url.Content("<path-to-typescript>")'></script>
<script>
    setupMyPage('@Model.MyServerGuid');
</script>

Eğer RequireJS kullanıyorsanız, ayrıca verebilirsiniz setupMyPagegenel ad işlevi eklemekten kaçının, bir modül olarak işlev:

Typescript dosyasında:

export = setupMyPage;

.cshtml olarak:

<script>
    require(['@Url.Content("<path-to-typescript>")'], function(setupMyPage) {
        setupMyPage('@Model.MyServerGuid');
    };
</script>
Cevap 08/08/2014 saat 12:24
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more