在我的应用程序中,我使用的是把手模板插件,我在这里有点困惑,如何将把手模板集成到使用单独模板的牵线木偶项目视图?
这是我的代码:
define([
'jquery',
'underscore',
'backbone',
'marionette',
'hbs!scripts/templates/login/loginTemp'], // this is my handlebars template.
function ($,_,Backbone,Marionette,loginTemplate) {
"use strict";
socialApp = window.socialApp || {};
socialApp.loginView = Backbone.Marionette.ItemView.extend({
tagName:'div',
className:'loginContainer',
template: '#loginTemplate' //this is template for login alone (from DOM )
});
return socialApp.loginView;
}
);
“loginTemp” - 包含登录模板所需的所有详细信息。
答案 0 :(得分:1)
您可以覆盖Marionette.TemplateCache.prototype.compileTemplate
函数以实现所需的行为:
Marionette.TemplateCache.prototype.compileTemplate = function (yourRawTemplate) {
// In case if template is function
if (_.isFunction(yourRawTemplate)) {
return yourRawTemplate;
} else {
return Handlebars.compile(yourRawTemplate);
}
};
答案 1 :(得分:1)
我的" Marionette-Handlebars Boilerplate" 可能对您有所帮助:
https://github.com/yuraji/marionette-handlebars-boilerplate
答案 2 :(得分:0)
如果您在木偶应用程序中使用区域,例如
socialApp.addRegions({
loginRegion:'<id of the region>'
})
如果您的模板是在脚本标记内编写的,那么您可以轻松地以这种方式呈现模板:
//defining the view
socialApp.loginView = Marionette.ItemView.extend({
template:Handlebars.compile(document.getElementById('loginTemplate').innerHTML),
...
...//other code and view logic
});
然后,
var loginView = new socialApp.loginView(); //creating instance of the view
socialApp.loginRegion.show(loginView); //rendering it inside the region