javascript - 在 Backbone 中渲染下拉菜单

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

我是 Backbone 新手,正在努力摸索。目前我有一个 View 将 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

最佳答案

看起来您正在覆盖下拉菜单的部分标记。在渲染函数中,您仅重新调整 ul 的 Markdown ,但覆盖整个 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 页面或外部页面的脚本标记中会更容易。

关于javascript - 在 Backbone 中渲染下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24787309/

相关文章:

Javascript 页面重绘在 touchmove 事件期间暂停

javascript - 是什么导致我的测试中出现 "Uncaught Error: write after end"?

Javascript数组循环变量未定义

ruby-on-rails - 使用rails_admin为日期字段添加默认值

ruby-on-rails - 反编译开发 Assets 管道

backbone.js + require.js + jsdoc3 : Missing dependency issue with jsdoc

乱序执行的 Javascript 代码,我可以修复它吗?

ruby-on-rails - 本地主机中出现 NoMethodError :3000

javascript - Require.js 错误 : Load timeout for modules: backbone,

javascript - 向 Backbone 模型添加功能的最有效方法