MenuView.jsBackbone значение вида пропуска другого вида
events: {
"click ul li": "MenuClick"
},
MenuClick: function (e) {
var elm = e.currentTarget;
return elm.firstChild.innerText;
},
ModuleView.js
ModuleView = Backbone.View.extend({
initialize: function() {
var moduleDt = new ModuleCol();
moduleDt.fetch({
data: JSON.stringify({ Code: "Pass to here" }),
dataType: "json",
type: 'POST',
contentType: "application/json; charset=UTF-8"
});
},
Код должны работать как при нажатии уль Ли, я получить значение от литий и перейдите к модулю Module.js, чтобы продолжить выборку магистральной сети, но у меня нет идеи о том, как это сделать, у меня был поиск по некоторой ссылке, но по-прежнему не могу понять, правильно ли это сделать Это?
Update1:
Посмотреть/MenuView.js
define(['underscore', 'backbone', '../Collection/MenuCol'], function (_, Backbone, MenuCol) {
var MenuView = Backbone.View.extend({
initialize: function() {
//var vent = _.extend({}, Backbone.Events);
var mnCol = new MenuCol();
mnCol.fetch({
type: 'POST',
contentType: "application/json; charset=UTF-8",
success: _.bind(this.AppendMenu, this),
});
},
AppendMenu: function (msg) {
var feed = JSON.parse(JSON.stringify(msg));
//var title = _.pluck(_.flatten(feed[0]), "Title");
_.each(_.flatten(feed[0]), function (data) {
this.$('ul').append('<li class="inactive"><p class="none">' + data.Code + '</p><a>' + data.Title + ' </a></li>');
});
},
events: {
"click ul li": "MenuClick"
},
MenuClick: function (e) {
var elm = e.currentTarget
console.log(elm.firstChild.innerText);
this.trigger('itemChoose', elm.firstChild.innerText);
},
});
return MenuView;
});
Посмотреть/ModuleView.js
define(['underscore', 'backbone', 'datatables', '../Collection/ModuleCol', '../View/MenuView'], function (_, Backbone, dataTable, ModuleCol, MenuView) {
var ModuleView = Backbone.View.extend({
initialize: function() {
//MenuView.vent.on('itmChoose');
MenuView.on('itemChoose', function (item_value) { });
var mdCol = new ModuleCol();
mdCol.fetch({
data: JSON.stringify({ Code: "" }),
type: 'POST',
contentType: "application/json; charset=UTF-8",
success: _.bind(this.AppendModule, this),
});
},
AppendModule: function (msg) {
var feed = JSON.parse(JSON.stringify(msg));
$('table[id$=gvMenu]').dataTable({
"bAutoWidth": false,
"aoColumns": [
{ "sWidth": "10%" },
{ "sWidth": "90%" },
],
"bFilter": false,
"bInfo": false,
"bLengthChange": false,
"bSort": false,
"bPaginate": false,
"aLengthMenu": [
[25, 50, 100, 200, -1],
[25, 50, 100, 200, "All"]
],
"iDisplayLength": -1,
"aoColumns": [
{
"sTitle": "Code", "mDataProp": "Title",
},
{
"sTitle": "Description", "mDataProp": "Description",
}],
sAjaxSource: "",
sAjaxDataProp: "",
fnServerData: function (sSource, aoData, fnCallback) {
//console.log(feed.d);
//fnCallback(feed.d);
},
});
}
});
//MenuView.on('itmChoose', function (item_value) { });
return ModuleView;
});
master.js
require(['jquery', '../JScripts/View/MenuView', '../JScripts/View/ModuleView'], function ($, menu, module) {
$(document).ready(function() {
new menu({ el: $('#sidebar') });
new module({});
});
});
Это мой код, но все же, правильно ли это код? Я провел ночь, чтобы разобраться, но он все еще говорит, что это не определено.
Когда я нажимаю, я получаю значение li и перехожу к module.js в данные ajax, чтобы создать datatable.
Я продолжаю ломать его и посмотреть, если я могу сделать это сегодня во время ожидания своего гида :) спасибо
, как вызвать его при нажатии li на moduleView.js? Если я инициализирую инициализацию, он не будет меняться при нажатии на кнопку, но только запускает ее при загрузке? или, может быть, я перемещаю событие li, чтобы щелкнуть на moduleView.js вместо menuView.js? – Se0ng11
Вы запускаете на li щелчок в menuView, затем menuView trigger event 'itemChoose', мы поймаем это событие в ModuleView, потому что мы подписываемся на него в методе initialize() –
Хорошо, эта работа превосходна, спасибо за руководство, которое вы предоставляете – Se0ng11