Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 在自定义数据绑定中将数据绑定应用于dom元素_Knockout.js - Fatal编程技术网

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)。