Подскажите JS библотеку...

Вопросы по вёрстке и JavaScript
Ответить
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Подскажите JS библотеку...

Сообщение mitaichik »

Должна делать вот что:
Есть JS-переменная - массив объектов (или массивов, неважно). Каждый объект массива представляет собой набор атрибутов Yii модели и передается в JSON.

Нужно чтоб библиотека умела их рендерить по шаблону.
Т.е. задаешь шаблон модели - а она автоматом рендерит, и при изменении переменной - перерендеривает.
И чтоб была на jQuery ))

Заранее спасибо.
Аватара пользователя
Smak
Сообщения: 9
Зарегистрирован: 2011.04.15, 12:27
Откуда: Новосибирск

Re: Подскажите JS библотеку...

Сообщение Smak »

Вам поможет шаблонизатор для JS. Например такой:

Код: Выделить всё

function tmpl(str){
    var fn = new Function("obj",
        "var p=[],print=function(){p.push.apply(p,arguments);};" +
        // Introduce the data as local variables using with(){}
        "with(obj){p.push('" + document.getElementById(str).innerHTML
          .replace(/[\r\t\n]/g, " ")
          .split("<%").join("\t")
          .replace(/((^|%>)[^\t]*)'/g, "$1\r")
          .replace(/\t=(.*?)%>/g, "',$1,'")
          .split("\t").join("');")
          .split("%>").join("p.push('")
          .split("\r").join("\\'") + "');} return p.join('');");
    return fn
}
Так будет выглядеть html шаблон

Код: Выделить всё

<script type="text/html" id="user_tmpl">
  <% for ( var i = 0; i < users.length; i++ ) { %>
    <li><a href="<%=users[i].url%>"><%=users[i].name%></a></li>
  <% } %>
</script>
Использовать можно так:

Код: Выделить всё

// Объект users получаете Ajax'ом 
var users = {
   0: {url: 'user url 1', name: 'user name 1'},
   1: {url: 'user url 2', name: 'user name 2'},
   2: {url: 'user url 3', name: 'user name 3'},
}

// Получим готовый html для дальнейшей вставки в тело документа
var r = tmpl("item_tmpl", users);
 
egoman
Сообщения: 2
Зарегистрирован: 2011.06.01, 10:19

Re: Подскажите JS библотеку...

Сообщение egoman »

Вот, можно сказать, хедлайнеры js шаблонизации
https://github.com/jquery/jquery-tmpl
https://github.com/janl/mustache.js
http://akdubya.github.com/dustjs/

JSON для них как родной.
Насчет "и при изменении переменной - перерендеривает" , это скорее всего надо будет доделать самому.
Ответить