2013-10-10 70 views
3

所以,我从继承的项目获得了这个数据。将数据从JSON传递到主干>模板页面

  • JSON数据的字段。

defaults:{ 
     "coolstuff":{uuid: null}, 
      "coolStartDate":new Date(), 
      "coolEndDate": new Date(), 
      "cooldata":'', 

      "supercool":'', // I am adding this (trying) 
     }, 

从这些其他一些相关的JS为:

offerStart: function() { 
    var date = this.get('coolStartDate') 
    return (_.isNull(date)) ? new Date() : helper.formatDate(new Date(date)) ; 
    }, 

其他一些数据被发现,被称为加价为模板内;

<%= cooldata %> 

我在抓住'supercool'数据的每一次尝试都失败了。我已经尝试了不同的synatax,在页面上,离开页面,一切。

我想知道我在骨干做(我是新来的明显Backbone.js的)

为了使用我的新的数据块或数据字段“过冷”的通过JSON,并允许它在页面中作为模板工作。


在这种特殊情况下,一个下拉菜单。

<div class="form-group"> 
    <select class="form-control filter"> 
     <option><%= supercool %></option> 
     <option><%= supercool %></option> 
    </select> 
</div> 

更新!


这是我在我的Backbone.js的,但仍然失败第一次运行当前的尝试。

(1.) MODEL。 (型号/ page.js)

define([ 
    'jquery', 
    'underscore', 
    'underscore', // Page > Model 
    'backbone', 
    'helpers/helpers', 
    'bbvalidation' 
], function(_, Backbone, Helpers) { 
    var helper = new Helpers(); 
    var offerModel = Backbone.Model.extend({ 
     urlRoot: "/loyalty/api/supercoolfile", 
     idAttribute: 'uuid', 
     url: function() { 
      return this.urlRoot + '/coolguys/' + this.get("id"); // 
     }, 
      defaults:{ 
     "supercool": "", // here 
     }, 

(2.) VIEW。 (视图/仪表板/ page.js)

define([ 
    'jquery', 
    'underscore', // Views -- js/views/page.js 
    'backbone', 
    'vm', 
    'text!templates/dashboard/page.html' 
], 

    template = _.template(<'<p>Name: <%= supercool %> </p>'), 

    render: function() {  
     this.$el.html(this.template(this.model.toJSON())); 
     return this; 
      } 

     }); 
    }); 

(3.)拉低数据INTO TEMPLATE(尝试)/dashboard/page.html

  <option><%= supercool %></option> 

应该工作,对?他们不适合我。


回答

1

这很难说究竟发生了什么,因为我不能肯定如何所有代码的连接,但如果你有渲染功能下面,就应该抢“过冷”为您提供:

template = _.template(<your template here>), 

render: function() {  
    this.$el.html(this.template(this.model.toJSON())); 
    return this; 
} 

这是假设第一位代码来自传递到您的视图的模型。该模板将挑选出需要的数据。

编辑:

有很多在这个单个职位。 Backbone项目不需要集合。它的目的是保存一系列模型。即您想要存储多个优惠,并且这种方式是一个集合。集合将允许您遍历视图中的每个模型来渲染它们。此外,您将模型初始化为offerModel,但将OfferModel作为集合中的模型传递。我不明白你为什么重新编写集合获取方法。

我不确定这是怎么回事,但它看起来像有一堆不必要的复杂化。

2日编辑:

我创建,告诉您如何得到这个渲染,不需大部分的外来信息的非常基本的jsfiddle:

http://jsfiddle.net/mmerkes/RdbXH/1/

+0

男人啊!谢谢一堆;好吧,我的第一部分代码应该在我的Models文件中,对吗?我应该在'视图'中写什么 - 这就是你建议我弹出'视图'渲染的内容吗?我认为这可能是我的错误!明天当我回到应用程序时,我会明白的! –

+1

是的,第一部分代码应该位于Backbone Model对象中,并且需要使用上面的render函数创建View Backbone对象。您将实例化视图并传入模型的实例,然后调用视图的渲染函数。我会看看一些示例代码,因为有很多东西可以让它们全部正常工作。 – EmptyArsenal

+0

谢谢@EmptyArsenal我仍然在这里打墙;我只是更新我的问题,我知道如果我得到这个,我可以成功开始使用backbone.js! –