在风帆.ejs文件的骨干视图

时间:2013-12-03 15:18:46

标签: javascript dom backbone.js view sails.js

我正在尝试访问sails框架中的骨干视图。我从服务器获取数据,我试图将它们推送到DOM。实际上,我为标签创建了一个模型控制器,我将数据从mongo存储到标签模型,然后返回标签视图的url。我想将这些数据显示给我的DOM元素。我试图找到如何在帆中这样做,因为我收到的是未定义的错误。我的DOM元素代码如下:

          51| <div id="profiles" class = 'hashTagsCloud'>
          52| <script id="profileTemplate" type="text/template">
       >> 53| <%= tagsCloud.tags.join("&nbsp &nbsp &nbsp")%>
          54| </script>
          55| </div>


      tagsCloud is not defined

其中tagsCloud是我从服务器获取的json文件的一个项目。视图的骨干代码:

  var ProfileView = Backbone.View.extend({

        el: "#profiles",
        template: _.template($('#profileTemplate').html()),
        render: function(eventName) {

        _.each(this.model.models, function(profile){
        var profileTemplate = this.template(profile.toJSON());
        //push data to obj for map script
        obj = profile.toJSON();
        // Add data to DOM element
        $(this.el).html(profileTemplate);
        }, this);

            return this;


        }


    });

上面的骨干逻辑就像阿帕奇的魅力一样。但是在帆中,我没有定义错误。如何以正确的方式为我的索引文件中的tagsCloud项定义? 我的json文件如下:

  [
    {
     tstamp: 1366626103000,
     tagsCloud: {
     sort: "asc",
     tags: [
           "Lorem ipsum dolor sit amet consectetur"
           ]
     },
     id: "529da369380eb213e804a673"
    }
  ]

此外,我在homeController文件中添加了一些动作,以便向jjs文件发送json数据:

index: function (req,res)
{

    console.log(req.tags);  // tags is the name of the model-controller
    res.view({
        tags: req.tags
    });
},

'home': function (req,res)
{
    res.view();
}

我是否需要在骨干视图代码中更改以正确更新索引视图???

1 个答案:

答案 0 :(得分:0)

最后,我找到了一种从骨干网向DOM发送获取数据的方法。我在骨干代码中更改了模板代码,以便直接将数据发送到DOM元素。这是我的代码:

     _.templateSettings = {
        interpolate : /\{\{(.+?)\}\}/g
    };

    var TagsView = Backbone.View.extend({

        el: "#profiles",
        template: _.template("<div><p>{{ tg.tagsCloud.tags }}</p></div>"),
        render: function(eventName) {

        _.each(this.model.models, function(tags){
        var tagsTemplate = this.template(tags.toJSON());
        //push data to obj for map script
        tg = tags.toJSON();

        // Add data to DOM element
        $(this.el).html(tagsTemplate);
        }, this);
            return this;                   
        }       
        });