3

所以,我从我继承的一个项目中得到了这个。

  • 数据的 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 %>

我每次尝试获取“超酷”数据都失败了。我尝试了不同的语法,页面上,页面外,一切。

我想知道我必须在主干中做什么(显然我是主干.js 的新手)

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


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

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

更新!


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

(1.)模型。(模型/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.)查看。(视图/仪表板/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. )将数据拉入模板(尝试)/dashboard/page.html

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

应该工作吧?它们不适合我。


4

1 回答 1

1

很难确切地说出发生了什么,因为我不确定您的所有代码是如何连接的,但是如果您有如下渲染函数,它应该为您获取“超酷”:

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

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

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

编辑:

一个帖子有很多内容。Backbone 项目不需要集合。它的目的是保存模型的集合。即您想要存储多个报价,而这样做的方法是集合。集合将允许您遍历视图中的每个模型以呈现它们。此外,您将模型初始化为 offerModel,但将 OfferModel 作为集合中的模型传递。而且我不明白您为什么要重写集合获取方法。

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

第二次编辑:

我创建了一个非常基本的 jsfiddle,它向您展示了如何在没有大部分无关信息的情况下渲染它:

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

于 2013-10-10T02:25:24.500 回答