Eğer Bıyık olmak zorunda değilse, Handlebars adı verilen bir Bıyık Üstünü kullanabilirsiniz.
Handlebars.registerHelper('escapeJs', function(str) {
return str.replace(/[\'\"\\\/]/gm, function (c) {
return '\\' + c;
});
});
Ve bu {{escapeJs title}}
gibi yardımcı çağırır:
İlk bir Gidon yardımcı kayıt bu fiddle canlı
var view = {
title: "Joe's Lame\"\\/€"
};
var template = Handlebars.compile(
"<a href=\"javascript:confirm('{{escapeJs title}}');\">{{title}}</a>");
var output = template(view);
Görünüm bunu.
Bıyık gerçekten harika ve neredeyse her programlama dilinde mevcut. Gidonlar harika ve ör. Backbone Thorax ve assemble, güçlü bir statik web sitesi üreticisi.
Düzenleme: Alternatif Çözelti
ECMAScript 5 (ve de IE8 çalışıyor olması gerekir takoz/sustalıyla/polyfills ile) kullanılarak, tek bir şu şekilde bıyık görüntüleme nesne hazırlamak olabilir. Kabul ediyorum ki, bu çok kullanışlı bir çözüm değil, ancak JavaScript çıktısı üretilirken, IMO kabul edilebilir. (Object.defineProperty yoluyla) yeni bir özellik tanımlama
function escapeJs (str) {
return str.replace(/[\'\"\\\/]/gm, function (c) {
return '\\' + c;
});
}
var view = {
title: "Joe's Lame"
};
Object.defineProperty(view, 'titleJsEnc', {
enumerable: false,
get: function() { return escapeJs(this.title); }
});
var output = Mustache.render(
"<a href=\"javascript:confirm('{{titleJsEnc}}');\">{{title}}</a>", view);
hile yok. Kaçınan dize değerini döndüren her bir gerçek özellik için bir alıcı tanımlayan bir genel nesne dekoratörü yazılabilir. İşte
fiddle
Düzenleme geçerli: Alternatif: Bu pull-request birleştirilir ve Bıyık yeni bir sürümü yayınlandıktan sonra bu sorun bir şekilde çözülmesi gerektiğini
Bıyık yeni bir sürümü bekleyin "Bıyık yerli yolu".
İlginç! Sanırım bu, Bıyık ile mümkün değil. Gidonlar ('Handlebars.registerHelper') ... – hgoebl
@hgoebl ile ilgili bir problem olmaması halinde, çözümün Bıyık olması gerekmiyor. –
O zaman [Gidonlar] 'a (http://handlebarsjs.com/) bir göz atmalısınız. Bıyık bir üst kümesidir ve çok kolay genişletilebilir. 'EscapeJs' gibi bir yardımcı-işlev oluşturmalı ve kaydetmelisiniz ve şablonunuzda '{{escapeJS title}} 'gibi kullanın. Zaman bulursam kemanını çatallayacağım. – hgoebl