如何添加自定义数据绑定到knockoutjs'模板绑定
How do I add custom data-bindings to knockoutjs' template binding
我目前正在使用ExternalTemplate扩展在运行时通过ajax加载我的模板。然而,我希望稍微扩展这个功能,这样我就可以提供多个模板目录。
我知道这看起来有点奇怪,但是我有几个模板可以来自的地方,不幸的是,不可能把它们都从一个大的模板文件夹中取出来。
我希望这样做:
<script type="text/javascript">
var templateEngineSettings = {
templatesLocations: {
"default":"/view-templates-1"
"other1":"/view-templates-2"
"other2":"/somewhere-else/view-templates"
},
templateSuffix: ".template.html"
};
ko.externaljQueryTemplateEngine.setOptions(templateEngineSettings);
</script>
<div data-bind="template: {name: 'some-template', location:'default'}"></div>
<div data-bind="template: {name: 'some-other-template', location:'other1'}"></div>
<div data-bind="template: {name: 'some-new-template', location:'other3'}"></div>
但是我找不到任何关于如何做到这一点的可靠文档,所以任何帮助将是伟大的!
外部模板引擎从:
ko.ExternalTemplateEngine.templateUrl
一种选择是为模板绑定创建一个包装器,该包装器将从模板位置交换该值。比如:
//custom binding
ko.bindingHandlers.templatex = {
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var options = valueAccessor(),
location = options.location,
current = koExternalTemplateEngine.templateUrl;
//set to our new location
ko.ExternalTemplateEngine.templateUrl = ko.bindingHandlers.templatex.templateLocations[location];
//call the real template binding
ko.bindingHandlers.update.tempate(element, valueAccessor, allBindingsAccessor, viewModel);
//reset the location back to the default
ko.ExternalTemplateEngine.templateUrl = current;
},
templateLocations: {}
};
//set in your app code
ko.bindingHandlers.templatex.templateLocations = {
"default":"/view-templates-1",
"other1":"/view-templates-2",
"other2":"/somewhere-else/view-templates"
};
相关文章:
- 使用KnockoutJS绑定的YUI DataTable
- KnockoutJS绑定每个文档不止一次
- 用于动态引导工具提示的自定义KnockoutJS绑定处理程序
- 将tinyMCE与knockoutjs绑定
- 如何使用knockoutjs绑定嵌套输入
- 使用knockoutjs绑定和显示字典
- 在knockoutjs绑定中使用setters函数
- Knockoutjs 绑定到复杂的 html 对象
- Knockoutjs 绑定对象问题
- KnockoutJS 绑定在我的视图模型实际创建之前应用
- KnockoutJS绑定到键/值对
- KnockoutJS 绑定来自 AJAX 调用的对象列表
- jqueryUI 模态对话框会破坏 Knockoutjs 绑定
- 如何在Telerik编辑器上使用knockoutjs绑定
- 模板渲染后的KnockoutJS绑定事件
- KnockoutJS绑定不使用映射插件进行更新
- Knockoutjs:绑定到模板中数组之外的一个可观察属性
- 选择列表中的KnockoutJs绑定问题
- Knockoutjs绑定问题与表
- 如何从整个穹顶中移除knockoutjs绑定