Knockout.js knockoutjs、自定义绑定和knockoutjs模板(从自定义绑定init方法调用knockoutjs模板)
我想将第三方控件挂接到knockoutjs中,并使用自定义绑定将它们连接在一起。到目前为止,它运行良好。但是,我想选择模板的控件很少 渲染控件。但是找不到任何方法通过javascript调用敲除js模板 这是可能的Knockout.js knockoutjs、自定义绑定和knockoutjs模板(从自定义绑定init方法调用knockoutjs模板),knockout.js,Knockout.js,我想将第三方控件挂接到knockoutjs中,并使用自定义绑定将它们连接在一起。到目前为止,它运行良好。但是,我想选择模板的控件很少 渲染控件。但是找不到任何方法通过javascript调用敲除js模板 这是可能的 //在单独的文件中获得以下模板 学分: //我的自定义绑定处理程序位于单独的文件中 ko.bindingHandlers.knockoutjs-text={ init:function(元素、valueAccessor、allBindingsAccessor、viewModel、
//在单独的文件中获得以下模板
学分:
//我的自定义绑定处理程序位于单独的文件中
ko.bindingHandlers.knockoutjs-text={
init:function(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){
//现在它想从这里调用person模板并将其附加到元素
}
})
这是我的案例的简单例子,我的案例是创建用户控件,b将这两者结合在一起。
如果你认为这个例子还不够,请让我知道
谢谢,
Daljit Singh是的,您可以使用动态模板: HTML:
正在加载。。。
下载模板后更新脚本标记:
self.Content = ko.observable("<b>Hello World</b>");
self.TemplateID = ko.observable("LoadingTemplate");
self.UniquePageID = ko.observable(GenerateUUID()); // create a random id
ko.computed(function () {
var html = self.Content(),
uniqueID = ko.utils.unwrapObservable(self.UniquePageID),
templateID = "template_" + uniqueID;
// remove the current template
$("#" + templateID).remove();
// append the html template
$("body").append('<script type="text/html" id="' + templateID + '">' + html + '</script>');
// update the template ID (this will trigger the knockoutjs data-bindings)
self.TemplateID(templateID);
}).extend({ throttle: 100 });
self.Content=ko.observable(“你好世界”);
self.TemplateID=ko.observable(“LoadingTemplate”);
self.UniquePageID=ko.observable(generateUID());//创建一个随机id
ko.computed(函数(){
var html=self.Content(),
uniqueID=ko.utils.unwrapobbservable(self.UniquePageID),
templateID=“template_216;”+唯一标识;
//删除当前模板
$(“#”+templateID).remove();
//附加html模板
$(“正文”)。附加(“”+html+“”);
//更新模板ID(这将触发knockoutjs数据绑定)
TemplateID(TemplateID);
}).extend({throttle:100});
有关更多信息,请参阅knockmeout.net上的。是的,您可以使用动态模板: HTML:
正在加载。。。
下载模板后更新脚本标记:
self.Content = ko.observable("<b>Hello World</b>");
self.TemplateID = ko.observable("LoadingTemplate");
self.UniquePageID = ko.observable(GenerateUUID()); // create a random id
ko.computed(function () {
var html = self.Content(),
uniqueID = ko.utils.unwrapObservable(self.UniquePageID),
templateID = "template_" + uniqueID;
// remove the current template
$("#" + templateID).remove();
// append the html template
$("body").append('<script type="text/html" id="' + templateID + '">' + html + '</script>');
// update the template ID (this will trigger the knockoutjs data-bindings)
self.TemplateID(templateID);
}).extend({ throttle: 100 });
self.Content=ko.observable(“你好世界”);
self.TemplateID=ko.observable(“LoadingTemplate”);
self.UniquePageID=ko.observable(generateUID());//创建一个随机id
ko.computed(函数(){
var html=self.Content(),
uniqueID=ko.utils.unwrapobbservable(self.UniquePageID),
templateID=“template_216;”+唯一标识;
//删除当前模板
$(“#”+templateID).remove();
//附加html模板
$(“正文”)。附加(“”+html+“”);
//更新模板ID(这将触发knockoutjs数据绑定)
TemplateID(TemplateID);
}).extend({throttle:100});
有关更多信息,请参阅knockmeout.net上的。问题提出后可能需要一段时间。我刚把它修好,车把也很好用 我必须为新的Typeahead.js编写一个自定义绑定,然后要求我在下拉列表中显示更多数据 我跟着滚动向下一点。这在Knockoutjs中工作得很好 这是正在讨论的代码,它不是专门针对knockoutjs的,但我将其用于我的模板:suggestion entry
$('.example-twitter-oss .typeahead').typeahead(null, {
name: 'twitter-oss',
displayKey: 'name',
source: repos.ttAdapter(),
templates: {
suggestion: Handlebars.compile([
'<p class="repo-language">{{language}}</p>',
'<p class="repo-name">{{name}}</p>',
'<p class="repo-description">{{description}}</p>'
].join(''))
}
});
$('.example twitter oss.typeahead').typeahead(null{
名称:'twitter-oss',
displayKey:'名称',
来源:repos.ttAdapter(),
模板:{
建议:车把([
“{{language}
”,
“{{name}
”,
“{{description}
”
].加入(“”)
}
});
请注意,Handlebar不是大写字母“B”拼写的,因为它使用编译函数,所以您必须使用更大的handlebar.js库(当前为“handlebar-v1.3.0.js”),而不是运行时库
我担心需要一个88kb的库来完成这项工作,但我确实喜欢车把臂的切割。问题提出后可能需要一段时间。我刚把它修好,车把也很好用 我必须为新的Typeahead.js编写一个自定义绑定,然后要求我在下拉列表中显示更多数据 我跟着滚动向下一点。这在Knockoutjs中工作得很好 这是正在讨论的代码,它不是专门针对knockoutjs的,但我将其用于我的模板:suggestion entry
$('.example-twitter-oss .typeahead').typeahead(null, {
name: 'twitter-oss',
displayKey: 'name',
source: repos.ttAdapter(),
templates: {
suggestion: Handlebars.compile([
'<p class="repo-language">{{language}}</p>',
'<p class="repo-name">{{name}}</p>',
'<p class="repo-description">{{description}}</p>'
].join(''))
}
});
$('.example twitter oss.typeahead').typeahead(null{
名称:'twitter-oss',
displayKey:'名称',
来源:repos.ttAdapter(),
模板:{
建议:车把([
“{{language}
”,
“{{name}
”,
“{{description}
”
].加入(“”)
}
});
请注意,Handlebar不是大写字母“B”拼写的,因为它使用编译函数,所以您必须使用更大的handlebar.js库(当前为“handlebar-v1.3.0.js”),而不是运行时库
我担心需要一个88kb的库来完成这项工作,但我确实喜欢车把三角架的切割。你能给我们展示一些你正在尝试做的示例代码吗?我现在正好遇到了这个问题。你是怎么处理这件事的,好吧,那是18个月前的事了,但我只是想谈谈这个问题。我试着用Handlebarjs来做这件事,但是要么它不起作用,要么我做错了什么。尽管下面的例子看起来可行,但感觉不对劲;虽然工作代码胜过坏代码。嗨,zeristor,这是一个人事项目,但我从来没有尝试过任何东西并编写过代码,我不确定这是否有帮助,但knockoutjs中有ko.rendertemplate方法,如果不让我知道的话。谢谢你给我们看一些你正在尝试做的示例代码?我现在正好遇到了这个问题。你是怎么处理这件事的,好吧,那是18个月前的事了,但我只是想谈谈这个问题。我试着用Handlebarjs来做这件事,但是要么它不起作用,要么我做错了什么。尽管下面的例子看起来可行,但感觉不对劲;虽然工作代码比坏代码好。嗨,zeristor,这是一个人事项目,但我从来没有真正尝试过任何东西和编写