所以,我从我继承的项目中得到了这个。
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使用我的新数据或数据字段'supercool',并允许它作为页面中的模板工作。
在这种特殊情况下;下拉菜单。
<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>
应该工作吧?他们不适合我。
答案 0 :(得分:1)
我很难确切知道发生了什么,因为我不确定你的所有代码是如何连接的,但如果你有一个如下所示的渲染功能,它应该为你获取'supercool':
template = _.template(<your template here>),
render: function() {
this.$el.html( this.template( this.model.toJSON() ) );
return this;
}
这假设代码的第一位来自传递到视图中的模型。模板将挑选出所需的数据。
编辑:
一篇文章中有很多内容。 Backbone项目不需要集合。它的用途是拥有一系列模型。即您想存储多个商品,而这样做的方式就是收藏品。通过集合,您可以遍历视图中的每个模型来渲染它们。此外,您将模型初始化为offerModel,但将OfferModel作为模型传递给集合。我不明白为什么你重写了集合提取方法。
我不确定这是怎么回事,但看起来有一堆不必要的复杂情况。
第二次编辑:
我创建了一个非常基本的jsfiddle,它向您展示如何在没有大部分无关信息的情况下进行渲染: