骨干 - 编辑在渲染之前查看模板

时间:2015-07-09 08:26:51

标签: jquery backbone.js twitter-bootstrap-3 backbone-views backbone-routing

我正在尝试使用Backbone渲染Bootstrap模式。我需要检查模板中的一些HTML元素(使用$('#tpl-create-details').html()),并在渲染之前隐藏它们,但我遇到了一些问题。

  1. 即使添加display:none,也不会隐藏元素。
  2. 我需要将模板创建为jQuery对象,因此我可以将display:none添加到元素中,但之后我不能使用相同的模板对象,因为它不会在页面上显示为一个Bootstrap模式,但是纯HTML。
    • Backbone视图是否适合这样做?
    • 我做错了吗?

    视图

    app.Views.CreateDetails = Backbone.View.extend({
    
        initialize: function () {
            var template = $('#tpl-create-details').html();
            template = $(template);
    
            this.collection.each(function (item) {
                var customizingItem = item.toJSON();
    
                var fieldId = customizingItem.name;
    
                if (customizingItem.hidden) {
                    var field = template.find('input[name=' + fieldId + ']');
                    var field = $(field.get(0));
                    field.parent().parent().css('display', 'none');
                }
            }, this);
    
            this.template = _.template(template.html());
        },
    
        render: function () {
            var html = this.template();
            this.$el.append(html);
            return this;
        }
    });
    

    路由器

    app.Router = Backbone.Router.extend({
        routes: {
            'create': 'create'
        },
    
        create: function () {
            var customizing = new app.Collections.Customizing();
            customizing.fetch({
                reset: true,
                success: function (collection, response, options) {
                    var CreateDetailsView = new app.Views.CreateDetails({
                        collection: collection
                    });
                    $('#content').append(CreateDetailsView.render().$el);
                    var modalAdd = this.$('#modalDetail');
                    modalAdd.modal('show');
                }
            });
        }
    });
    

0 个答案:

没有答案