Backbone.js中未定义将数据传递给视图模板?

时间:2015-05-20 14:47:51

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

所有

我正在尝试暂时传递一个简单的JSON对象(尝试使用模型,但仍然存在同样的问题)。

我已经使用名为"技能"的变量初始化了我的视图。我想传递给我的模板。但是在模板中,它表示未定义。

    define([
    'jquery',
    'underscore',
    'backbone',
    'text!templates/skillsPopup.html', //for templates you should prepend the path with !text
    'common'
], function ($, _, Backbone, SkillsTemplate, Common, Skills)
{
    'use strict';

    var FilterView = Backbone.View.extend({

        el: $("#skillsPopup"), //set this to the element where the template will be rendered upon

        skills : 
            [{
                "skillCode": "Mechanical Engineer",
                "skillDescription": "Mechanical Engineer"
            },
            {
                "skillCode": "Air Conditioning Engineer",
                "skillDescription": "Air Conditioning Engineer"
            },
            {
                "skillCode": "Electrical Engineer",
                "skillDescription": "Electrical Engineer"
            }],



        template: _.template(SkillsTemplate),

        // setup the view to listen to its counterpart model for changes
        initialize: function ()
        {
            this.render();
        },

        // render template onto the view
        render: function ()
        {
            this.$el.html(this.skills);
            return this;
        }
    });

    return FilterView;
});

模板

<div id="test">
      <% console.log(skills); %>
</div> 

错误

  

ReferenceError:未定义技能

     

的console.log(技能);

我查看了几个Backbone教程,但我无法看到我犯的任何错误。

2 个答案:

答案 0 :(得分:1)

您需要致电.template方法

this.$el.html(this.template({skills: this.skills}));

_.template

答案 1 :(得分:1)

您应该将上下文传递给模板,而不是jQuery的OrderDate = new DateTime(2015, 5, 20);方法:

String.Format("{0:MM/dd/yy}", OrderDate)