【问题标题】:Rendering a dropdown Menu in Backbone在 Backbone 中渲染下拉菜单
【发布时间】:2014-09-07 08:48:04
【问题描述】:

我是 Backbone 的新手,我正试图通过它跌跌撞撞。目前,我有一个将 json 哈希呈现到下拉菜单中的视图。当我在浏览器中检查元素时,我可以实际查看 UL 元素,并将所有 JSON 呈现到列表中,但浏览器中没有任何视觉显示。应该注意的是,我使用 twitter bootstrap 来构建下拉菜单。非常感谢任何帮助。

App.Views.FilterView = Backbone.View.extend({
  initialize: function(){
  _.bindAll(this, 'render');
  this.$button = this.$('.dropdown');
  this.listenTo(this.collection, 'sync', this.render);
},

render: function(){
  html = _.template(this.template());
  this.$el.html(html);
},

template: function() {
  var criteria = initial_data.criteria_hash.servers.criteria;    
  var list = "";

  for(var i = 0;  i < criteria.length; i++){
    list += "<li role=\"presentation\">" + criteria[i]  + "</li>";
  }
  return "<ul class='criteria-list dropdown-menu' role=\"menu\">" + list + "</ul>";
  }
});

这里是 HAML:

    %h2.beta Reports 
      .criteria-container
        .dropdown
          %button.btn.btn-default.dropdown-toggle{"data-toggle" => "dropdown"}
            Search Criteria
            %span.caret

【问题讨论】:

  • 您是否在任何地方初始化下拉菜单?例如在你的渲染函数的末尾this.$el.find('.dropdown-toggle').dropdown()
  • 不,我试过了,但似乎没有什么不同
  • 你能创建一个jsbinjsfiddle吗?

标签: javascript ruby-on-rails backbone.js haml


【解决方案1】:

您似乎正在为下拉菜单覆盖部分标记。在您的渲染函数中,您只是重新调整了 ul 的降价,但您正在覆盖整个 el

如果您在模板函数中包含按钮的标记,它应该可以工作

template: function() {
    var criteria = initial_data.criteria_hash.servers.criteria;   
    var list = "";

    for(var i = 0;  i < criteria.length; i++){
      list += "<li role=\"presentation\">" + criteria[i]  + "</li>";
    }
    return "<button class=\"btn btn-default dropdown-toggle\"  data-toggle=\"dropdown\">Search criteria<span class=\"caret\"></span></button><ul class='criteria-list dropdown-menu' role=\"menu\">" + list + "</ul>";
  }
});

这是jsbin的链接

您可能还会发现分离模板的标记并将其放置在 html 页面或外部页面的脚本标记中更容易。

【讨论】:

  • 不错!现在我在浏览器中有它,但下拉菜单本身似乎被破坏了
  • 抱歉,我没有真正使用过引导程序,但我怀疑标记已关闭。首先看看你是否可以让你的下拉菜单看起来像你自己想要的那样(即没有动态渲染)。
  • 看起来我链接到了旧版本的引导程序,我更新了 jsbin 并且下拉列表现在看起来正确。
  • 原来是主干的绑定错误,再次感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2018-07-15
  • 2014-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多