2013-05-09 18 views
5

LESS değişkenlerini JavaScript ile dinamik olarak değiştirmek için less.js kullanmaya çalışıyorum. Ancak, modifyVars, watch veya refresh ile çalışmak için görünmüyor olabilir., JavaScript ile sayfadaki LESS değişkenlerini dinamik olarak değiştir

less.modifyVars({'@bg': '#00ff00'}) numaralı telefonu kullanarak less.js dosyasını yüklemeden önce stil sayfası bağlantı etiketini yerleştirmeyi denedim, ancak arka planda değişiklik olmaz. Ben kullanıyorum az dosya basittir: this question belirtilen ve modifyVars ve sonra refresh bir çağrı izledi less.sheets.push($('#less-link')[0]) kullanma gibi

@bg: #000; 
body { background-color: @bg; } 

Ben de, less.js sonra stil link tag koyarak çalıştı. Arka plan renginde değişiklik yok.

Ayrıca @bg: #000;'u LESS dosyasına yorumlamayı ve daha sonra modifyVars aracılığıyla ayarlamayı denedim. Hayır şans: Ben bir Less::ParseError: variable @bg is undefined ile sona erer.

LESS değişkenlerini dinamik olarak nasıl değiştirebilirim ve bu değişiklikleri yansıtacak sayfa görünümü güncelleştirmesini nasıl alabilirim?

Düzenleme: hm, bu bazı Rails büyüleri oluyor olabilir. Daha az dosyamı yüklediğimde, değişken tanımı gitmişti ve gördüğüm tek şey body { background-color: #000; } idi. Sayfada gömülü <style type="text/less"> LESS bloğuna geçip this override LESS JavaScript kullandım. less.Override('@bg', '#00ff00') ile bir değişkeni değiştirdim ve sayfanın arka plan rengini hemen değiştirdim. this answer'a teşekkürler. Şimdi <link> yerine <style> etiketini kullanarak less.js ile deneyeceğim.

Düzenleme: az-1.3.3.min.js AZ link etiketleri yüklenecek istiyor gibi görünüyor - Ben TypeError: Cannot read property 'href' of undefined olsun ben modifyVars kullanmaya çalıştığınızda ve sayfam şöyle görünür:

<style type="text/less"> 
@bg: #000; 
body { 
    background-color: @bg; 
} 
</style> 
<script src="/assets/less-1.3.3.min.js?body=1" type="text/javascript"></script> 

cevap

1

İstemci tarafını değiştiren değişkeni yerine, bir Rails uygulamasında yaptığımdan beri, sunucu tarafını taşıdım. Özel değişkenlerimi içeren bazı LESS'i ayrıştırmak için Ruby bindings for LESS kullanıyorum, ayrıştırma sonucunu content_type: 'text/css' ile oluşturuyor ve oluşturulan CSS'ye bir stil sayfası bağlantısı eklemek için bir AJAX isteği kullanıyorum.

İlgili konular