これはMooToolsのコードです:
var myString = "{subject} is {property_1} and {property_2}.";
var myObject = {subject: 'Jack Bauer', property_1: 'our lord', property_2: 'savior'};
myString.substitute(myObject);
jQueryにはこのメソッドまたは同様のメソッドがありますか?
これはMooToolsのコードです:
var myString = "{subject} is {property_1} and {property_2}.";
var myObject = {subject: 'Jack Bauer', property_1: 'our lord', property_2: 'savior'};
myString.substitute(myObject);
jQueryにはこのメソッドまたは同様のメソッドがありますか?
いいえ。ただし、自分で追加することを妨げるものは何もありません。
jQuery.substitute = function(str, sub) {
return str.replace(/\{(.+?)\}/g, function($0, $1) {
return $1 in sub ? sub[$1] : $0;
});
};
// usage:
jQuery.substitute('{foo}', {foo:'123'});
このプラグインを試してくださいhttps://github.com/trix/nano、ソースはほんの数行です
/* Nano Templates (Tomasz Mazur, Jacek Becela) */
(function($){
$.nano = function(template, data) {
return template.replace(/\{([\w\.]*)\}/g, function (str, key) {
var keys = key.split("."), value = data[keys.shift()];
$.each(keys, function () { value = value[this]; });
return (value === null || value === undefined) ? "" : value;
});
};
})(jQuery);
ドット表記{user.name}を使用できますが、これは単純で強力です。
テンプレートの$.nano
ドット表記にタイプミスがあるとエラーが発生するため、答えはループになりました。さらに、プラグインa['foo bar']
としての私のバージョンは、次のようなすべての有効な文字を許可していません。$.substitute
/*
* JQuery Substitute method allows for simple templating using JS Object dot notation.
* Contribute link: https://gist.github.com/danielsokolowski/0954fc2a767f441720b9
*
* @param strTemplate - string contain the replacement tokens
* @param objData - an Object represetnting your replacmenet values
*
* Example:
* var strTemplate = 'Hello {user.name}'
* var strDatra = {'user': 'Daniel Sokolowski'}
* alert($.substitute(strTemplate, objData)); // outputs 'Hello Daniel Sokolowski'
*
*/
$.substitute = function(strTemplate, objData) {
return strTemplate.replace(/\{([^{}]*)\}/g, function(math, subMatch1) {
try {
var keys = subMatch1.split(".");
var value = objData[keys.shift()]; // return first element and update the original array
while (keys.length !== 0) { // keep returning properties
value = value[keys.shift()]
}
return String(value);
} catch (err) { // return any errors as a string
return String(value);
}
});
};
.NETのString.Formatメソッドと同様の構文を共有するプラグインがいくつかあります。
これは、jQuery Validateプラグイン(一般的にCDNにあります)を利用します。
例:
$("button").click(function () {
var str = "Hello {0}, this is {1}";
str = jQuery.validator.format(str, "World", "Bob");
alert("'" + str + "'");
});
2番目のプラグインの名前は.NETStyleStringFormatです。
例:
var result = $.format("Hello, {0}", "world");
これらはあなたが探しているものと正確に一致しないかもしれませんが、それらは役に立つかもしれません。