Как проверить существует ли переменная вообще в шаблоне который формируются через emit?
<% if(username) { =username } %>
Variable not found — username
<% if(username !== undefined) { =username } %>
Variable not found — username
<% if(username !== null) { =username } %>
Variable not found — username.
Неужели только через try?
<% try{ =username } catch(e) { ="error"} %>
Ожидал, что незаданная переменная будет undefined или null. Удалось обыграть ситуацию только через try.
Здравствуйте, Antik, Вы писали:
A>Как проверить существует ли переменная вообще в шаблоне который формируются через emit?
A>A><% if(username) { =username } %>
A>
Использовать не глобальные переменные а property некоего объекта, например [пере]определить переменную self для template.
Т.е. так
<% =self.username || "Ah?" %>
Вот тебе полный пример:
<html>
<head>
<style></style>
<script type="text/template" #template>
Hello <strong><%= self.username || "Unknown" %></strong> !
</script>
<script type="text/tiscript">
function instantiate(templateSelector,data)
{
var tmpl = self.select(templateSelector).value;
if( !tmpl ) return "Template not found!";
var sin = Stream.openString(tmpl);
var sout = Stream.openString();
emit(sin,sout,{self:data});
var r = sout.toString();
sout.close();
sin.close();
return r;
}
$(button#test1).onClick = function()
{
var data = {};
$(div#out).html = instantiate( "script#template", data );
}
$(button#test2).onClick = function()
{
var data = { username:"Antik" };
$(div#out).html = instantiate( "script#template", data );
}
</script>
</head>
<body>
<button #test1>Test 1</button>
<button #test2>Test 2</button>
<div #out />
</body>
</html>
A>Ожидал, что незаданная переменная будет undefined или null. Удалось обыграть ситуацию только через try.
Обращение к неопределнной глобальной переменной в 99% случаев есть ошибка. Поэтому по многочисленным просьбам трудящихся runtime генерирует ошибку в этом случае.
Обращение же к неопределенной property есть штатная ситуация.