Аргументы параметров URL запроса
В фреймворке есть еще один тип аргументов
шаблона, которые создаются функцией
fcf.argURL(). Данный тип
аргументов шаблона связывает параметр
URL запроса с аргументом. При изменении
аргумента запроса выполняется изменение
параметра URL адреса, а при задании URL
параметра выполняется установка значения
аргумента.
Применим
данный тип аргументов в нашем приложении.
Если вы обратите внимание, при нажатии
на кнопки "Reload" или "Refresh"
происходит сбрасывание текущей вкладки,
т.к. все шаблоны возвращаются в начальное
состояние, но чтобы этого не происходило,
достаточно задать аргумент шаблона
"tab" для шаблона
@controls:tabs используя
функцию fcf.argURL().
Файл :templates/blocks/moving-containers.tmpl:
...
//~TEMPLATE
<div class="moving-containers-view" style="background-image: url(@{{args._file}}@);">
<div class="moving-containers-view-info">
Rebound counter: <span name="rebound_counter">#{{args._reboundCounter}}#</span>
</div>
%{{
for(let i = 0; i < args._strings.length; ++i) {
}}%
@{{
render.template(
"+view-item",
{
string: fcf.argRef(`_strings[${i}]`),
fcfEventRebound: "parent.setArg('_reboundCounter', parent.getArg('_reboundCounter')+1)"
})}}@
%{{
}
}}%
</div>
<fieldset>
<legend>Editor</legend>
@{{
render.template("@controls:tabs", {
tab: fcf.argURL("tab", {default: "strings"}),
items: fcf.argVal({
strings: {
title: "Strings",
content: fcf.argTmpl("+strings", {strings: fcf.argRef("_strings")})
},
settings: {
title: "Settings",
content: fcf.argTmpl("+settings")
}
})
});
}}@
</fieldset>
@{{ render.template("@controls:button", {title: fcf.t("Save"), enable: fcf.argRef("_modify"), fcfEventClick: "parent.onSave()"}); }}@
@{{ render.template("@controls:button", {title: fcf.t("Reload"), enable: fcf.argRef("_modify"), fcfEventClick: "parent.reload()"}); }}@
@{{ render.template("@controls:button", {title: fcf.t("Refresh"), enable: fcf.argRef("_modify"), fcfEventClick: "parent.refresh()"}); }}@
...
И проверим результат.
И так, наше приложение готово. Полный код приложения можно скачать со страницы примера /examples/fcf-example-moving-containers