Как привязать динамический элемент к четному виду, используя backbone.js - PullRequest
1 голос
/ 09 мая 2011

Я новичок в использовании backbone.js и jquery.Мне нравится привязывать динамический сгенерированный элемент к событию клика.здесь мой код:

InvoiceView = Backbone.View.extend({
initialize: function () {
    var _this = this;

         $('input.BtnValidate').bind('click', function () {
        _this.model.save();
        _this.model.createTable();
        _this.model.updateTotalAmount();
        _this.model.clear();
    });

    $('img.ImgDelete').bind('click', function () {            
        _this.model.RemoveTableRow();
        _this.model.updateTotalAmount();
    });  

}});      

где img.ImdDelete - это динамически генерируемые данные ячейки таблицы.

код в модели:

InvoiceModel = Backbone.Model.extend({
createTable: function () {
    var lastRow = $('#TblInvoiceList tr:last');
    var newRow = $('<tr>');
    newRow.append($('<td>').text($('input.Name').val()), $('<td>').text($('input.GrossAmount').val()));
    newRow.append("<td class='center'><img class='ImgDelete' src='image/ButtonDelete.png' /></td>");
    lastRow.before(newRow);
    $("tr:nth-child(even)").addClass("white");
    lastRow.addClass("tr.last");
        },

RemoveTableRow: function () {
    alert("delete the row");
             var deletedRow = $('#TestTable td img.ImgDelete');
            S(deletedRow).parent().parent().remove();

                            });

}});

MyПроблема в том, что событие не связано с моделью.И я не вижу предупреждающее сообщение.

1 Ответ

1 голос
/ 09 мая 2011

Ну, это задокументировано в магистрали здесь: http://documentcloud.github.com/backbone/#View-delegateEvents

В вашем расширении View предоставьте аргумент событий:

events : {
  "click input.BtnValidate" : "validate",
  "click img.ImgDelete" : "delete"
}, ...

Определите валидацию и удаление как функции в вашем представлении, и вызадавать.Есть много примеров этого в примерах магистрали.Backbone использует делегат jQuery для правильного делегирования событий представлению.Дополнительный бонус заключается в том, что делегат работает почти так же, как и в реальном времени, поэтому вы можете динамически добавлять и удалять элементы по своему усмотрению (live - это в значительной степени делегат в теле).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...