Knockout.js 在自定义数据绑定中将数据绑定应用于dom元素
我有一个自定义数据绑定,如下所示:Knockout.js 在自定义数据绑定中将数据绑定应用于dom元素,knockout.js,Knockout.js,我有一个自定义数据绑定,如下所示: ko.bindingHandlers.calendar = { init: function(element, valueAccessor) { var value = valueAccessor() || {}; var calType = $('<select style=""><option value="gregori
ko.bindingHandlers.calendar = {
init: function(element, valueAccessor) {
var value = valueAccessor() || {};
var calType = $('<select style=""><option value="gregorian">Miladi</option><option value="islamic">Hicri</option><option value="rumi">Rumi</option></select>');
// Need to something to apply this binding for the calType variable
calType['attr']('data-bind', 'chosen : true');
....
....
$(element).before(calType);
}
};
ko.bindingHandlers.chosen = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).chosen();
},
update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
$(element).trigger("liszt:updated");
}
};
ko.bindingHandlers.calendar={
init:函数(元素、值访问器){
var value=valueAccessor()| |{};
var calType=$('MiladiHicriRumi');
//需要为calType变量应用此绑定
calType['attr']('data-bind','selected:true');
....
....
$(元素).before(calType);
}
};
ko.bindingHandlers.selected={
init:函数(元素、valueAccessor、allBindingsAccessor、viewModel){
$(元素).selected();
},
更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel){
$(元素).trigger(“李斯特:更新”);
}
};
我想对日历绑定中动态创建的dom元素应用所选绑定。有什么方法可以做到这一点吗?在创建动态创建的dom元素后,应该调用“ko.applyBindings(viewModel);”。相当复杂。。。你确定你需要这个?我可以做不同的事情,你有什么想法吗?也许最好提前创建所有必需的元素,并映射到VM中的一些条件属性,然后在自定义绑定器中执行操作,或者让ko来处理它。写更多的细节或问更一般的问题,我们会找到另一种解决问题的方法。我检查了你的建议,但那不起作用。它给了我一个不属于viewModel这一部分的异常。“未捕获错误:无法分析绑定。消息:TypeError:Object#没有“已启用”的方法。”ko.applyBindings(x)尝试绑定所有viewModel,但我只需要该元素。您必须考虑,此代码可能在初始绑定之后运行。我也尝试了KO.AppBydIn(VIEWMod,X),但又遇到了另一个异常。这一次是关于所选插件的。未捕获类型错误:无法设置未定义的h的属性“disabled”。搜索\u字段\u disabled。必须挖掘所选的库以找出实际问题。最后,我可以通过ko.applyBindings(viewModel,x)来完成。谢谢你的提示。欢迎,X应该是你的视图模型的变量名。问题中没有提到。您应该使用ko.applyBindings(viewModel)。