如何为提线木偶分配功能.模板
how to assign function to marionette.template
据我所知,marionette.template
接受jquery selector
或compiled template string
。
如果我以如下方式编写代码,则工作良好
exports.ProductInfoView=Backbone.Marionette.ItemView.extend({
domInfo:{
mainTemplateId:"tagProductListTpl",
tableTemplateId:"taginfoViewTpl"
},
template:commomFunctions.templateCompilation("tagProductListTpl",""),
onRender:function(){
this.templatingProductInformation();
},
modelEvents:{
"change:currentJson":"templatingProductInformation"
},
templatingProductInformation:function(){
console.log(this.el);
//this.el.innerHTML=commomFunctions.templateCompilation(this.ui.mainTemplateId,"");
}
});
注意:commonFunctions.templateCompilation()
接受templateId
作为第一个参数,接受data
作为第二个参数。它将编译handlebars template
,并返回已编译的模板。
如果我将该返回值分配给template
,则工作正常。
我想制作用于模板的数据,所以我将function
传递给template like in the following way.
exports.ProductInfoView=Backbone.Marionette.ItemView.extend({
domInfo:{
mainTemplateId:"tagProductListTpl",
tableTemplateId:"taginfoViewTpl"
},
template:function(){
return commomFunctions.templateCompilation("tagProductListTpl","");
},
onRender:function(){
this.templatingProductInformation();
},
modelEvents:{
"change:currentJson":"templatingProductInformation"
},
templatingProductInformation:function(){
console.log(this.el);
//this.el.innerHTML=commomFunctions.templateCompilation(this.ui.mainTemplateId,"");
}
});
这种方式也很好,如果你观察我硬编码的templateId("tagProductListTpl")
内部函数。但我不想那样。我想使用类似this.domInfo.mainTemplateId
的代码,而不是硬编码。那样就不好用了。
这是投掷错误。我知道它超出了范围。但我怎么能做到这一点。
有人能帮我吗?
谢谢。
我建议您重写负责模板编译的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);
}
};
如果从远程服务器加载模板文件,还需要重写Backbone.Marionette.TemplateCache.prototype.loadTemplate
。这里的例子:
Marionette.TemplateCache.prototype.loadTemplate = function ( templateId ) {
var template = '',
templateUrl = 'path_to_your_template/' + templateId + '.html';
// Loading template synchronously.
Backbone.$.ajax( {
async : false,
url : templateUrl,
success : function ( templateHtml ) {
template = templateHtml;
}
} );
return template;
};
相关文章:
- 强制模板刷新ember.js
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 需要URL模板占位符查找和替换功能的输入
- 下划线模板不是不显示弹出框功能
- 如何在车把模板中访问功能
- 角度 - 使用具有回退功能的动态路径加载自定义模板
- 如何为提线木偶分配功能.模板
- 我该如何在加载模板上设置最小超时功能
- 可以混合使用模板和链接功能
- Meteor JS-加载每个模板后启动功能
- 点击功能在Angular的正式自定义模板中不起作用
- 如何在ember.js中动态添加{{link-to}}帮助器到模板?(功能类似于angular中的$compile)
- 模板呈现后,如何在空格栏中更改模板辅助功能
- 正确的方法预编译车把模板的功能,如玉做的那样
- ReSharper对QUnit测试的支持;无法识别Chutzpah模板导入功能
- “ng-class”不适用于来自包含模板的功能调用
- 访问指令模板内的外部控制器功能
- 指令内部模板中的Ng-click没有提供这个功能