Я новичок в позвоночнике и пытаюсь установить некоторые хорошие парадигмы.multiselect treeview в позвоночнике
Прямо сейчас, я работаю над поиском тяжелого сайта. Есть десятки атрибутов для поиска, многие из них являются минимальным типом, но 6 или около того - несколько. До позвоночника я использовал что-то под названием listtree, чтобы создать сворачиваемую listtree для параметров multiselect. Я все еще буду использовать эти классы css, но теперь я пытаюсь использовать магистраль с моделями и представлениями. TBH, это похоже на большую работу, чем просто использование прямого jquery, поэтому, возможно, я что-то упустил.
Мой вопрос в том, как мне структурировать модели и представления для нескольких видов виджетов в виде дерева?
Вот код, который я до сих пор:
<script type='text/template' id='listtree_bs'>
<div class="listtree">
<ul>
<% _.each(context, function(element, index){ %>
<li>
<span>
<input class="checkbox-listview-master" type="checkbox" value="<%= element.value %>"><%= element.name %><i class="glyphicon glyphicon-chevron-up"></i>
</span>
<ul style="display: none;">
<% _.each(element.items, function(childelement, index){ %>
<li>
<span>
<input class="checkbox-listview-master" type="checkbox" value="<%= childelement.value %>"><%= childelement.name %><i class="glyphicon glyphicon-chevron-up"></i>
</span>
</li>
<% }); %>
</ul>
</li>
<% }); %>
</ul>
</div>
</script>
var ListTreeModel = Backbone.Model.extend({
urlRoot: "/search/multiselect/",
idAttribute:'value',
});
var ListTreeModels = Backbone.Collection.extend({
model: ListTreeModel,
url: "/search/multiselect/",
parse: function (response) {
return response.data;
}
});
var listtreemodels = new ListTreeModels();
listtreemodels.fetch()
var ListTreeView = Backbone.View.extend({
events: {
"treechecked": "treechecked"
},
treechecked: function(e){
console.log('triggered');
});
var listtreeview = new ListTreeView({el: $('#listtree_bs')});
response.data сверху выглядит вроде как это (я могу легко изменить бэкенд, хотя для облегчения переднего конца)
{
"data": [
{
"other": 0,
"values": [
{
"value": 1,
"key": "type (35513)"
}
],
"value": "type_of_code",
"key": "C Type",
"missing": 275793
},
{
"other": 25273,
"values": [
{
"value": 41,
"key": "United States of America (187293)"
}
],
"value": "primary_country_id",
"key": "Primary Country",
"missing": 3475
},
{
"other": 10958,
"values": [
{
"value": 623,
"key": "company 623 (12602)"
}
],
"value": "controller_id",
"key": "Search by Controller",
"missing": 248288
},
{
"other": 1294,
"values": [
{
"value": 6,
"key": "animal type (247267)"
},
{
"value": 7,
"key": "animal type y (23315)"
}
],
"value": "animal_id",
"key": "Animals",
"missing": 0
},
{
"other": 0,
"values": [
{
"value": 5,
"key": "Inactive (63693)"
},
{
"value": 1,
"key": "Active (825)"
}
],
"value": "current_status_code_table_id",
"key": "Current Status",
"missing": 109101
},
{
"other": 0,
"values": [
{
"value": 0,
"key": "stuff (275058)"
},
{
"value": 1,
"key": "more stuff (39860)"
},
{
"value": 2,
"key": "even more stuff (668)"
}
],
"value": "stuff_indicator",
"key": "Stuff Indicator",
"missing": 0
}
]
}
Так что сейчас модели заполняются на уровне данных, но должны ли они заполняться на вложенном уровне и управлять этим с помощью отношений от одного до многих?
Что эти мультиселекты заполняют форму поиска, которая будет отправляться обратно на сервер, когда пользователь нажимает на поиск. Могу ли я привязать вышеуказанные представления к модели, даже если они вложены?
Я пытаюсь создать основу в качестве эксперимента здесь, но является ли это тем, для чего он был действительно предназначен? Результаты поиска сложны и нарезаны десятками просмотров. Я надеялся использовать позвоночник, чтобы держать дом легким и ловким. Прямо сейчас он завязывается во многих обратных вызовах событий и просто много html.
Я думаю, лучше задайте этот вопрос на http://programmers.stackexchange.com/ – Sergey