我的Backbone / Underscore模板问题?

时间:2014-04-06 09:50:08

标签: javascript jquery backbone.js underscore.js underscore.js-templating

好吧,我已经发布了一些有关此问题的问题并且大部分工作都有效,但我不确定我正在做什么,所以我认为在一个新问题中发布我的问题会更简单,更清晰,附上我的代码的完整副本。

所以我的目标是,我的数据库中包含菜单,菜单标题,路径以及以id字段为主键的级别。然后我有一个PHP类,在一个' nav'列表中的标记。这一切都没有任何问题。现在,级别设置为1到5,并且select SQL命令通过使用该级别进行排序来构建菜单。

为此考虑的目标是使表单保存所有这些数据,然后使用HTML5拖放并能够更改数据库中的级别集。

所以我目前要做的是让BackBone将这些数据加载到下划线模板中。这是我遇到一些问题的地方。

所以我的BackBone代码,

var AdminColModel = Backbone.Collection.extend({
     url: '/GetMenu'
});

var AdminEditMenu = Backbone.View.extend({
el: '.page',
render: function() {
    var that = this;
    var MyMenu = new AdminColModel();

    MyMenu.fetch({
        success: function(MyMenu) {
            var menutemp = _.template( $('#MenuTemplate').html(), {MyMenu: MyMenu.toJSON() } );
            that.$el.html(that.menutemp );
            return that; 
        }
    });

}
}); 

$(document).ready(function(){  
   var MyMenu = new AdminEditMenu();
   MyMenu.render();  
});

路径 /GetMenu 返回,我在这里使用PHP Slim来执行此操作,菜单数据库信息采用JSON格式。

这是我的下划线代码,

<script type="text/template" id="MenuTemplate"> 

   <% _.each(MyMenu, function(MyMenu) { %>

        <%= $('.page').append(MyMenu.id) %>
        <%= $('.page').append(MyMenu.title) %>
        <%= $('.page').append(MyMenu.path) %>
    <%= $('.page').append(MyMenu.level) %>
    <%= $('.page').append('<br/><br/>') %>

   <% }); %>

</script>

现在我的BackBone指向&#39; .page&#39;我在这个tempalte的代码上方的div标签中回显的类,这样,形成我所知道的,类在模板之前的DOM中,我认为是对的。

我也在使用Grunt来缩小我的所有主干/ JQuery代码,这些代码在关闭我的body标签之前加载。

现在这确实有效,但是从我观看的YouTube视频中,这个人只是在下划线模板中的一个表中编码,然后加载。如果我在模板中加载任何东西,并没有显示,JQuery。我发现我添加到我的JSON数据的唯一方法是我可以打印/回显我的页面中的数据。我不认为这是对的,我知道我一定做错了。

我没有发布我的任何PHP代码,因为我认为不需要它,这一切都有效,而且我的代码的那一面似乎没有任何问题。

欢迎所有帮助或评论。

格伦。

1 个答案:

答案 0 :(得分:1)

that.$el.html(that.menutemp );更改为that.$el.html( menutemp );

由于menutemp是一个局部变量,因此不需要that