Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript “委托”;模板";装订不';行不通 小提琴:_Javascript_User Interface_Data Binding_Web_Knockout.js - Fatal编程技术网

Javascript “委托”;模板";装订不';行不通 小提琴:

Javascript “委托”;模板";装订不';行不通 小提琴:,javascript,user-interface,data-binding,web,knockout.js,Javascript,User Interface,Data Binding,Web,Knockout.js,因此,我想为模板绑定创建一个快捷方式,如下所示: ko.bindingHandlers.shortcut = { init: function(element, valueAccessor, allBindings, viewModel, bindingContext) { var data = valueAccessor(); var nextValueAccessor = function () {

因此,我想为模板绑定创建一个快捷方式,如下所示:

ko.bindingHandlers.shortcut = {
        init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
            var data = valueAccessor();
            var nextValueAccessor = function () {
                return  { name: 'someTemplate', data: data };
            };
            ko.bindingHandlers.template.init.call(this, element, nextValueAccessor, allBindings, viewModel, bindingContext);
        }
}
HTML:



定义了“someTemplate”模板。什么都不说是不行的。我在这里做错了什么?

您的问题本质上是您没有调用模板绑定的
update
函数。不过,您可能会发现使用稍微不同的方法包装绑定更容易,因此您只需使用
init
函数:

ko.bindingHandlers.shortcut = {
        init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {

            ko.applyBindingAccessorsToNode(element, {
                template: function() {
                    return {
                        name: 'someTemplate',
                        data: valueAccessor()
                    };
                }
            }, bindingContext)

            return { controlsDescendantBindings: true };
        }
};
样本:

如果您仍在使用KO 2.x,那么您可能希望使用
KO.applybindingstoode
来代替:

        ko.applyBindingsToNode(element, {
            template: {
                name: 'someTemplate',
                data: valueAccessor()
            }
        }, bindingContext);

示例:

您的问题本质上是您没有调用模板绑定的
update
函数。不过,您可能会发现使用稍微不同的方法包装绑定更容易,因此您只需使用
init
函数:

ko.bindingHandlers.shortcut = {
        init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {

            ko.applyBindingAccessorsToNode(element, {
                template: function() {
                    return {
                        name: 'someTemplate',
                        data: valueAccessor()
                    };
                }
            }, bindingContext)

            return { controlsDescendantBindings: true };
        }
};
样本:

如果您仍在使用KO 2.x,那么您可能希望使用
KO.applybindingstoode
来代替:

        ko.applyBindingsToNode(element, {
            template: {
                name: 'someTemplate',
                data: valueAccessor()
            }
        }, bindingContext);
样本: