使用jQuery for Dynamic表单的Backbonejs视图 - 当用户通过app

时间:2015-11-22 16:24:54

标签: jquery backbone.js

Backbonejs在这里总是新手,而且总体上是一个以这种方式开发应用程序的新手。我有一个视图,用一些jQuery代码呈现HTML,允许复制一组字段。

$(document).on('click', '.btn-add', function(e){
    e.preventDefault();

    var controlForm = $('.controls form:first'),
        currentEntry = $(this).parents('.entry:first'),
        newEntry = $(currentEntry.clone()).appendTo(controlForm);

    // Reset the entries to the newly added field.
    newEntry.find('#title').val('');
    newEntry.find('#section').val('');
    newEntry.find('#active').prop('checked',false);

    controlForm.find('.entry:not(:last) .btn-add')
        .removeClass('btn-add').addClass('btn-remove')
        .removeClass('btn-success').addClass('btn-danger')
        .html('<span class="glyphicon glyphicon-minus">-</span>');

}).on('click', '.btn-remove', function(e){
    $(this).parents('.entry:first').remove();

    e.preventDefault();
    return false;
});

我有一些其他jQuery迭代JSON对象(在视图中加载到js变量中) - 并触发&#34;点击&#34; event并将值分配给表单元素。

var d = '<%= sections %>';

if (d) {
    var cnt = 0;
    $.each($.parseJSON(d), function() {
        if (cnt >=1) {
            $('.btn-add').trigger('click');
        }
        cnt++;
    });

    var t = $.parseJSON(d);
    cnt = 0;
    $('#sections *').filter(':input').each(function(){
        if (this.name) {
            if (this.type == "checkbox") {
                if (t[cnt][this.name]) {
                    $(this).prop('checked', true);
                } else {
                    $(this).prop('checked', false);
                }
            } else {
                $(this).val(t[cnt][this.name]);
            }
        } else {
            // button element has no name, so this is the end of this set of fields.
            // increment counter here
            cnt++
        }
    });
}

在第一次加载时,一切都很好用。或者重新加载&#34;。但是当我浏览Backbonejs应用程序时 - 视图完全失败。这是它在新负载上的表现:

Correctly rendered with data from model

第二次加载(注意+符号消失了,还有一个额外的字段集)。

Second Load after navigating around app

一件有趣的事情;当&#34; +&#34;单击,它应该只复制一次字段集。但是在导航应用程序之后 - 它将被复制多次(取决于我点击其他链接多少次,然后返回到&#34;部分&#34;链接)。我的直觉是整个视图正在重新创建,并且侦听器正在为每次重新加载进行复制。这是对的,如果是的话 - 我该如何防止这种情况发生?

谢谢大家!

0 个答案:

没有答案