backbone / marionette:templateHelpers不工作

时间:2014-01-29 17:03:18

标签: javascript jquery backbone.js marionette

我发现在使用templateHelpers并将其设置为函数时,它根本不显示。

但是当我在templateHelper中使用变量时,它正在显示。基本上他们在这个链接https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md#viewevents中有什么,它不能在我的最终工作。

jsfiddle在这里http://jsfiddle.net/gerlstar/Ms7uN/2/

model2 = Backbone.Model.extend({
    defaults: {
        age: '',
        name: ''
    },
    initialize: function () {
        this.set({
            name: "Terry"
        });
    }

});

someview = Marionette.ItemView.extend({
    tagName: "div",
    template: "#tpl-box",
    templateHelpers: {
        showMessage: function () {
            return " is the coolest!";
        }
    }
});

var app = new Marionette.Application();
app.container = new Backbone.Marionette.Region({
    el: "#container"
});
app.layout = new Backbone.Marionette.Layout.extend({
    template: "#tpl-layout",
    region: {
        rgn: "#rgn1"
    }
});
var m = new model2();
var view2 = new someview({
    model: m
});

app.on("initialize:after", function() {

layout = new app.layout();
app.container.show(layout);
layout.rgn.show(view2);
});
app.start();

HTML

<div id="container" class="container"></div>
<script id="tpl-box" type="text/html">
    <%= name %>
</script>
<script id="tpl-layout" type="text/html">
    < h3 > My layout < /h3>
        <div id="rgn1">
        </div >
</script>

1 个答案:

答案 0 :(得分:2)

这是你固定的小提琴http://jsfiddle.net/pSv9h/

你有两个问题:

1。定义布局时的new关键字

扩展骨干/ marionnete类时,不应使用new关键字。

app.layout = Backbone.Marionette.Layout.extend代替app.layout = new Backbone.Marionette.Layout.extend

2。 regions不是region

您需要在regions而不是region

内定义您的区域